NetlinkHandler.cpp revision a976656ff90291b9437a4d37b48e82abcd48195e
1a05db3816b4e29790aed9de9ef1cf4b2d0b616c9Chris Wren/* 2a05db3816b4e29790aed9de9ef1cf4b2d0b616c9Chris Wren * Copyright (C) 2008 The Android Open Source Project 3a05db3816b4e29790aed9de9ef1cf4b2d0b616c9Chris Wren * 4e071abda7825ef1049ed94691fac5ca853b47f09Julia Reynolds * Licensed under the Apache License, Version 2.0 (the "License"); 5a05db3816b4e29790aed9de9ef1cf4b2d0b616c9Chris Wren * you may not use this file except in compliance with the License. 6a05db3816b4e29790aed9de9ef1cf4b2d0b616c9Chris Wren * You may obtain a copy of the License at 7a05db3816b4e29790aed9de9ef1cf4b2d0b616c9Chris Wren * 8780861f2452b519c128289dac836e5a756100e1dJeff Sharkey * http://www.apache.org/licenses/LICENSE-2.0 9780861f2452b519c128289dac836e5a756100e1dJeff Sharkey * 10780861f2452b519c128289dac836e5a756100e1dJeff Sharkey * Unless required by applicable law or agreed to in writing, software 11780861f2452b519c128289dac836e5a756100e1dJeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS, 12a05db3816b4e29790aed9de9ef1cf4b2d0b616c9Chris Wren * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a05db3816b4e29790aed9de9ef1cf4b2d0b616c9Chris Wren * See the License for the specific language governing permissions and 14e7ee54ee7f4985bc743053d38d21f33c70220f05Craig Lafayette * limitations under the License. 15e7ee54ee7f4985bc743053d38d21f33c70220f05Craig Lafayette */ 16e7ee54ee7f4985bc743053d38d21f33c70220f05Craig Lafayette 1727ee33482a2fdecbbbedbd33a137ceae3e93fa2aphweiss#include <stdio.h> 1827ee33482a2fdecbbbedbd33a137ceae3e93fa2aphweiss#include <stdlib.h> 19e7ee54ee7f4985bc743053d38d21f33c70220f05Craig Lafayette#include <errno.h> 20e7ee54ee7f4985bc743053d38d21f33c70220f05Craig Lafayette#include <string.h> 21e7ee54ee7f4985bc743053d38d21f33c70220f05Craig Lafayette 22e7ee54ee7f4985bc743053d38d21f33c70220f05Craig Lafayette#define LOG_TAG "Vold" 23e7ee54ee7f4985bc743053d38d21f33c70220f05Craig Lafayette 24e7ee54ee7f4985bc743053d38d21f33c70220f05Craig Lafayette#include <cutils/log.h> 25789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey 26789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey#include <sysutils/NetlinkEvent.h> 27789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey#include "NetlinkHandler.h" 28789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey#include "VolumeManager.h" 29789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey 30789a8fc792725e4988ff43d554b3c8c037c41921Jeff SharkeyNetlinkHandler::NetlinkHandler(int listenerSocket) : 31789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey NetlinkListener(listenerSocket) { 32789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey} 33789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey 34789a8fc792725e4988ff43d554b3c8c037c41921Jeff SharkeyNetlinkHandler::~NetlinkHandler() { 35789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey} 36789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey 37789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkeyint NetlinkHandler::start() { 38789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey return this->startListener(); 398a372a0a280127743ce9a7ce4b6198c7a02d2a4fJeff Sharkey} 408a372a0a280127743ce9a7ce4b6198c7a02d2a4fJeff Sharkey 418a372a0a280127743ce9a7ce4b6198c7a02d2a4fJeff Sharkeyint NetlinkHandler::stop() { 42cf3f0a11a83e7a798e0586a78efdafc82a7f3d08Jeff Sharkey return this->stopListener(); 43cf3f0a11a83e7a798e0586a78efdafc82a7f3d08Jeff Sharkey} 448a372a0a280127743ce9a7ce4b6198c7a02d2a4fJeff Sharkey 458a372a0a280127743ce9a7ce4b6198c7a02d2a4fJeff Sharkeyvoid NetlinkHandler::onEvent(NetlinkEvent *evt) { 46ce1d0e94593eed9f838ff2a01e45aca5576ea7feGarfield Tan VolumeManager *vm = VolumeManager::Instance(); 47ce1d0e94593eed9f838ff2a01e45aca5576ea7feGarfield Tan const char *subsys = evt->getSubsystem(); 48ce1d0e94593eed9f838ff2a01e45aca5576ea7feGarfield Tan 49ce1d0e94593eed9f838ff2a01e45aca5576ea7feGarfield Tan if (!subsys) { 508a372a0a280127743ce9a7ce4b6198c7a02d2a4fJeff Sharkey SLOGW("No subsystem found in netlink event"); 518a372a0a280127743ce9a7ce4b6198c7a02d2a4fJeff Sharkey return; 52c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav } 53c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav 54789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey if (!strcmp(subsys, "block")) { 55789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey vm->handleBlockEvent(evt); 56789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey } 57789a8fc792725e4988ff43d554b3c8c037c41921Jeff Sharkey} 588a372a0a280127743ce9a7ce4b6198c7a02d2a4fJeff Sharkey