作者:gzshun. 原创作品,转载请标明出处!
说了这么多,该到执行命令的函数了,要不黄花菜都凉了。上一篇文章讲了vold如何开启接收framework下发命令的线程,最终到了runCommand函数的实现,总共有6个版本,由于重复性大,只讲VolumeCmd类的runCommand函数的实现。
VolumeCmd可以说是最重要的,该类的实现处理了list,debug,mount,unmount,format,unshare,shared等等操作,详细说明:
list: 在启动vold之后,接收的第一条命令就是list,这里是获取系统的所有磁盘对象,一般只有sd卡。
debug: 设置USB的调试模式
mount: 挂载磁盘
unmount: 卸载磁盘
format: 格式化磁盘
unshare: 关闭USB的大容量存储模式,相当于断开手机与电脑的连接
shared: 开启USB的大容量存储模式,相当于手机与电脑连接,并挂载在电脑
下面把该函数的源码贴出来,一目了然,程序员,代码说话:
每次操作完成后,都要将操作结果汇报给framework,阶级负责工作,一定要把工作结果汇报给领导,这里使用了sendMsg函数。
1.搜索需要挂载的磁盘对象信息列表。先从listVolumes函数开始,贴源码:
这函数扫描了mVolumes容器,里面保存着从配置文件/etc/vold.fstab解析出来的磁盘。
该容器是在main函数中添加的:vm->addVolume(dv);
这函数先将每个磁盘的标签,挂载点,状态汇报给framework,然后再循环工作结束后,再次向领导汇报工作结束。
2.设置调试模式。贴源码:
每个Volume对象都有一个setDebug函数设置调试状态:
挂载磁盘涉及到很多内容和源码,将在下一篇文章继续说明,待续。。。
分享到:
相关推荐
Android-vold源码分析
android-vold架构[收集].pdf
android中vold代码分析,主要用来自动挂载设备
android系统vold透析 Vold的全称是 Volume Daemon
在Android 系统中所有的热插拔设备都是通过Vold 进程挂载的。通过kernel–>vold–>StorageManagerService这样的架构去逐级上报热插拔事件。 一、Vold 入口 --> /system/vold/main.c int main(int argc, char** ...
USB之android_Vold分析.pdf
此篇文章详细描述了USB之android_Vold_分析
android中VOLD代码框架的讲解和分析,设计到存储管理
主要目录 1 Vold简介 2 Vold功能介绍 3 Vold通信 4 USB Storage Framework结构分析
USB之android_Vold分析,分析了linux udev与android vold的关系由来,vold的功能、架构,使用netlink的通信过程。kernel的uevent发送,framework层的处理、磁盘的挂载等等。
android平台移植ntfs-3g使支持ntfs格式tf卡、U盘、stat硬盘挂载,解压文件到external目录下,mm编译成功后,可手动指行 ntfs-3g /dev/block/vold/* /storage/sdcard1 或者添加 Ntfs.cpp Ntfs.h到system/vold目录实现...
本文档详细地介绍了android系统挂载中的vold,对vold的由来、功能、内部架构以及通信等方面进行了较为详细的介绍与较为深入的分析,是学习android挂载方面知识的一份比较好的材料。
android系统vold架构与流程透析
Android系统启动过程分析 本文主要介绍Android系统的启动过程,以Androidinit进程之后部分为主,init之前部分同标准Linux内核启动完全相同。于Android启动过程复杂,涉及C、C++及java部分内容,本文以流程分析为主线...
解析android中Vold进程,让大家更好更快的掌握Vold
Android vold 多U盘多分区挂载实现 可以对比原生的vold代码查看修改
Uevent 简介 NetLink 简介 MountService 功能介绍: MountService 同 StroageManager 的交互 MountService 同 Vold 的交互
android 对插入设备后产生的反应,诉说连接的响应与挂载