android vold学习总结

android vold学习总结

ID:40524614

大小:64.50 KB

页数:4页

时间:2019-08-04

android vold学习总结_第1页
android vold学习总结_第2页
android vold学习总结_第3页
android vold学习总结_第4页
资源描述:

《android vold学习总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、vold学习总结Vold(volumedaemon):源码路径android/system/vold,部分引用代码位于android/system/core/libsysutils/src,android/system/core/include/sysutils/下。它用于管理和控制android平台的外部设备,包括u盘、sd卡等的插入,拔出和格式化等。Vold为守护进程,由init进程启动,Vold的框架如下图所示:Linuxkernel与vold进程通过netlink机制进行跨进程通信,vold中的NetlinkManager接收来自linuxkerne

2、l上报的uevent事件,然后将其转换成一个NetlinkEvent类型,并调用VolumeManager类的相应方法进行处理,VolumeManager会将处理的结果发送给MountService,VolumeManager与MountService之间通过CommandListener机制进行通信,本质是通过socket进行跨进程通信,MountService运行在SystemServer进程中。Uevent事件内容就是一个字符串,linuxkernel在下列两种情况下会上报uevent事件:1.外设状态发生变化触发,当有U盘、sd卡等外设的插拔动作时,

3、都会引起linuxkernel上报uevent事件,如果vold在外设状态发生变化之前已经建立了netlink连接,就能收到相应的uevent事件。2.在/sys目录下会有一个叫做uevent的文件,往该文件中写入特定的数据,也会触发kernel发送和该设备相关的uevent事件,这个由应用层触发,例如vold启动时,会往uevent文件中写入数据,它就会触发linuxkernel发送uevent事件,这样vold就能获取设备的当前信息。在etc/目录下有个vold.fstab文件(实际上该文件是在system/etc目录下,它在system/core/ro

4、otdir/init.rc中有配置:symlink/system/etc/etc,通过软链接而链接到etc目录下),该文件是android系统与硬件平台交互的接口,用户可以手动配置该文件,在androidsystemcorerootdiretc下有个vold.fstab文件,它描述了vold.fstab文件配置挂载设备的模板,dev_mount

5、使用该设备上的第几个分区,sysfs_path表示设备在sys目录下的设备路径(可多个),各个参数之间用全部用空格或tab键隔开。注:sysfs文件系统是linux中一种特殊的文件系统,用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的内核数据结构信息。sysfs_path表示vold监测的路径,当有设备插入时,在监测的路径下会多出一个文件夹,该文件夹中描述了插入设备的各种ID信息。在sys目录下有多个目录:block(系统中的所有块设备)、bus(系统中的所有总线设备)、devices(系统中的所有设备层次结构)、drivers(系统中的所有驱动

6、)等。dev_mountsdcard1/mnt/sdcardauto/devices/platform/sdhci-tegra.2/mmc_host/mmc1/mmc1当设备中出入sd卡后,在dev/block目录下会多出几个设备节点,表示sd卡驱动已经加载成功,一般会多出两个设备节点mmcblk0和mmcblk0p1节点,其中mmcblk0表示第一个sd卡设备,mmcblk0p1表示第一个sd卡设备的第一个分区,真正挂载到系统中的是mmcblk0p1而非mmcblk0,如果手动使用mount挂载时,不能直接挂载设备,而是选择挂载设备的分区,例如mount-

7、tvfat/dev/block/mmcblk0p1sdcard关键点:1.Vold的main方法中会调用process_config()方法解析vold.fstab文件,根据文件内容去配置VolumeManager对象。2.当linuxkernel上报一个uevent事件时,NetlinkManager会处理该事件,实际是它是调用NetlinkHandler类处理的,NetlinkHandler类的继承层次关系:NetlinkHandler继承自NetlinkListener,而NetlinkListener又继承自SocketListener。在Netli

8、nkListener类的onDataAvailabl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。