android vold 加密,android vold架构详解(1)

首先上一张整体的结构类图

a1b0a71666214f5575b3823f7ad93020.png

VOLD:Volume Daemon存储守护进程,用来为响应Usb/SD卡插入,拔出等动作提供服务。

系统启动时,通过解析init.rc文件来启动各种系统服务。

包括VOLD服务也是在这里启动。

service vold /system/bin/vold

class core

socket vold stream 0660 root mount

ioprio be 2

VOLD服务的入口函数system/vold/main.cpp

int main() {

VolumeManager *vm; // 管理Volume,实现USB/SD卡Mount,Unmount等动作

CommandListener *cl; // 传递上层Framework向下发送的信息

NetlinkManager *nm; // 响应kernel层传递来的VolumeDiskInserted、VolumeDiskRemoved等信息

mkdir("/dev/block/vold", 0755);

/* Create our singleton managers */

if (!(vm = VolumeManager::Instance())) {

SLOGE("Unable to create VolumeManager");

exit(1);

};

if (!(nm = NetlinkManager::Instance())) {

SLOGE("Unable to create NetlinkManager");

exit(1);

};

cl = new CommandListener();

vm->setBroadcaster((SocketListener *) cl);

// Kernel层消息发送到Library后,经过一些列处理,最后通过这个CommandListener将消息发送到vold Socket中

// Application Framework层从vold Socket中取得消息,处理。

nm->setBroadcaster((SocketListener *) cl);

if (vm->start()) { // 什么也没做

SLOGE("Unable to start VolumeManager (%s)", strerror(errno));

exit(1);

}

// 解析vold.fstab

// 根据vold.fstab文件,初始化DirectVolume和Volume.cpp实例

if (process_config(vm)) {

SLOGE("Error reading configuration (%s)... continuing anyways", strerror(errno));

}

// 初始化NetlinkHandler.cpp实例,开始监听kernel层向上发送的消息

if (nm->start()) {

SLOGE("Unable to start NetlinkManager (%s)", strerror(errno));

exit(1);

}

coldboot("/sys/block");

/*

* Now that we're up, we can respond to commands

*/

// 开始监听来自FrameWork层的信息

if (cl->startListener()) {

SLOGE("Unable to start CommandListener (%s)", strerror(errno));

exit(1);

}

// Eventually we'll become the monitoring thread

while(1) {

sleep(1000);

}

SLOGI("Vold exiting");

exit(0);

}

预计明天开始,以下内容分析

Kernel层向上发送消息处理流程

FrameWork层向下发送消息处理流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值