android存储相关Vold总结

转载请注明出处:http://blog.csdn.net/droyon/article/details/45154991

Vold进程中包含三大块,CommandListener,VolumeManager,NetlinkManager。

1、CommandLinstener是MountService与VolumeManager的中介。负责命令的上传下达。内部使用socket用于跨进程通信。作为socket的服务端,MountService作为客户端。接收MountService的控制指令,将VolumeManager的上报消息传送给MountService。

2、VolumeManager,接收来自NetlinkManager发过来的uevent事件,进行相应处理后,通过CommandListener发送给MountService,MountService接收信息后,会继续下发控制指令给VolumeManager做继续处理。例如:底层接收到sd插入的uevent事件,VolumeManager发给MountService,MountService继续下发挂载指令等等。

3、NetlinkManager接收来自kernel内核的uevent事件,sd卡挂载、格式化等操作,kernel向NetlinkManager发送uevent事件。NetlinkManager会将消息传递给VolumeManager做继续处理。


kernel在以下两种情形下发送Uevent事件:

1、当设备发生变化时。设备的插入和拔出,例如sd卡的插入或者usb外置存储设备的插入,像otg等。这种情况是由设备主动触发的。

2、相应的存储设备在sys下一般存在“设备文件”,直接或者间接的操作设备文件,改变设备文件中的内容,都会触发kernel发送和该设备相关的Uevent消息。


ps:Netlink是Linux系统中用户空间和kernel进行通信的一种机制,其复用socket的相关接口,用户接收来自kernel的一些信息,同时向kernel发送相应指令。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hailushijie

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值