vold 架构分析

                                            Vold 框架分析

main.cpp,vold的入口函数,系统起来会只执行vold的可执行文件,调到这个main函数中。
NetlinkManager.cpp位于源码位置/system/vold/NetlinkManager.cpp。该类的主要通过引用NetlinkHandler类中的onEvent()方法来接收来内核的事件消息,NetlinkHandler位于/system/vold/NetlinkHandler.cpp。
VolumeManager:位于源码位置/system/vold/VolumeManager.cpp。该类的主要作用是接收经过NetlinkManager处理过后的事件消息。
main.cpp,vold的入口函数,系统起来会只执行vold的可执行文件,调到这个main函数中。
NetlinkManager.cpp位于源码位置/system/vold/NetlinkManager.cpp。该类的主要通过引用NetlinkHandler类中的onEvent()方法来接收来内核的事件消息,NetlinkHandler位于/system/vold/NetlinkHandler.cpp。
VolumeManager:位于源码位置/system/vold/VolumeManager.cpp。该类的主要作用是接收经过NetlinkManager处理过后的事件消息。
CommandListener 该类位于位于/system/vold/CommandListener.cpp,通过vold socket与NativeDaemonConnector通信。

NativeDaemonConnector该类位于frameworks/base/services/java/com.android.server/NativeDaemonConnector.java。该类用于接收来自Volume.cpp 发来的SD卡挂载消息并向上传递。
MountService位于frameworks/base/services/java/com.android.server/MountService.java。
MountService是一个服务类,该服务是系统服务,提供对外部存储设备的管理、查询等。在外部存储设备状态发生变化的时候,该类会发出相应的通知给上层应用。在Android系统中这是一个非常重要的类

                StorageManaer位于frameworks/base/core/java/andriod/os/storage/StorageManager.java。
 在该类的说明中有提到,该类是系统存储服务的接口。在系统设置中,有Storage相关项,同时Setting也注册了该类的监听器。
 而StorageManager又将自己的监听器注册到了MountService中,因此该类主要用于上层应用获取SD卡状态

总的讲,vold程序需要分层三部分,第一部分为NetlinkManager,管理接受来自kernel的UEvent消息,第二部分为VolumeManager,主要负责处理来自NetlinkManager的消![]
息和来自java层的消息,之后真正的挂载卸载动作就需要volume负责了。
vold  架构分析

vold  架构分析
service vold /system/bin/vold
class core
socket vold stream 0660 root mount
ioprio be 2
vold挂接的时序图
vold  架构分析
流程图
vold  架构分析

转载于:https://blog.51cto.com/14369000/2402845

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值