Android系统磁盘管理源码分析
文章平均质量分 75
本专栏主要分析了Android系统的磁盘管理部分,磁盘管理部分需要3个部分的支持,Android UI,Framework,Vold。3个部分分别配合联系,管理了Android系统的磁盘部分。
gzshun
熟悉C/C++/Java/Lua,Linux爱好者,擅长爬虫技术,专注网络游戏开发。
展开
-
Android源码分析系列-整理篇
作者:gzshun. 原创作品,转载请标明出处!来源:http://blog.csdn.net/gzshun本系列主要走了一下Android挂载SD卡的流程,从Vold到Framework,再从Framework到UI。也熟悉了谷歌写的C/C++源代码,提高一下自己的类的设计与代码的技巧,很感谢谷歌提供这么一个手机的开源操作系统Android,让鄙人也有机会来了解一下智能终端系统的实现原创 2012-01-03 17:45:08 · 27120 阅读 · 15 评论 -
Android-Vold, Framework和UI的通信-大结局(12)
作者:gzshun. 原创作品,转载请标明出处!来源:http://blog.csdn.net/gzshun写了好几篇文章,花儿都快谢了,终于轮到Framework发挥领导的身份了,Framework作为界面与vold之间的桥梁,用户是Framework的大爷,那么Framework就是Vold的大哥大,Framework发出一个命令,Vold不敢不遵从,只能照着Framework的意原创 2012-01-03 10:22:04 · 14319 阅读 · 11 评论 -
Android-vold源码分析之连接电脑OTG(11)
作者:gzshun. 原创作品,转载请标明出处!来源:http://blog.csdn.net/gzshunOTG是on-the-go的简称,是2001年由USB Implementers Forum公布,主要应用于各种不同的设备或移动设备间的联接,进行数据交换。特别是PDA、移动电话、消费类设备。改变如数码照相机、摄像机、打印机等设备间多种不同制式连接器,多达7种制式的存储卡间数据交原创 2012-01-02 19:25:51 · 10506 阅读 · 2 评论 -
Android-vold源码分析之格式化SD卡(10)
作者:gzshun. 原创作品,转载请标明出处!来源:http://blog.csdn.net/gzshun本文开始讨论sd卡的格式化功能,平时使用windows操作系统,也经常格式化磁盘。涉及到的操作有这几步:1.将分区信息写到硬盘的第一个设备节点的MBR结构中的分区表;2.格式化分区到指定的文件系统类型。MBR中存放分区表的位置在446-509,占用了64字节,原创 2012-01-01 11:15:11 · 19270 阅读 · 10 评论 -
Android-vold源码分析之卸载SD卡(9)
作者:gzshun. 原创作品,转载请标明出处!来源:http://blog.csdn.net/gzshun本文分析卸载sd卡的源码,这些涉及的内容比较少,走过就行。在Android系统,系统设置里面,提供了挂载,卸载与格式化的功能。在这里,我们可以回忆一下,Android在挂载sd卡有几个途径,卸载又是有几种方法?一、挂载sd卡,有2种方式:1.用户自己挂载sd卡;原创 2011-12-31 21:20:05 · 12940 阅读 · 0 评论 -
Android-vold源码分析之挂载SD卡(8)
这里续上一篇文章,讲解挂载磁盘的操作:3.挂载磁盘。这里都有一个const char *类型的参数,这参数保存着每个磁盘的标签信息,比如sd卡的label是sdcard。int VolumeManager::mountVolume(const char *label) { Volume *v = lookupVolume(label); if (!v) {原创 2011-12-30 20:15:46 · 13437 阅读 · 4 评论 -
Android-vold源码分析之runCommand(7)
作者:gzshun. 原创作品,转载请标明出处!说了这么多,该到执行命令的函数了,要不黄花菜都凉了。上一篇文章讲了vold如何开启接收framework下发命令的线程,最终到了runCommand函数的实现,总共有6个版本,由于重复性大,只讲VolumeCmd类的runCommand函数的实现。VolumeCmd可以说是最重要的,该类的实现处理了list,debug,mount,unm原创 2011-12-29 22:12:33 · 7805 阅读 · 2 评论 -
Android-vold源码分析之startListener(6)
作者:gzshun. 原创作品,转载请标明出处!vold处理完磁盘事件,就要开始接受framework的操作命令,在main函数里面,开启了一个线程来监听framework的信息,当收到操作命令,vold进行解析,分析出命令,然后调用相应的磁盘操作函数,待操作完成后,再将操作结果的状态值反馈给framework,中间均使用了广播机制,使用了UDP协议。在main函数中,有以下函数的调用原创 2011-12-28 23:10:18 · 7668 阅读 · 2 评论 -
Android-vold源码分析之handleBlockEvent(5)
作者:gzshun. 原创作品,转载请标明出处!上篇文章分析到了handleBlockEvent函数,该函数包含了以下6个处理函数:void handleDiskAdded(const char *devpath, NetlinkEvent *evt);void handleDiskRemoved(const char *devpath, NetlinkEvent *evt);原创 2011-12-27 22:32:18 · 9136 阅读 · 7 评论 -
Android磁盘管理-之vold源码分析(4)
作者:gzshun. 原创作品,转载请标明出处!上篇文章分析到了NetlinkHandler类中的onEvent函数,该函数由NetlinkListener::onDataAvailable函数调用,当SocketListener类监听到内核的uevent事件,调用该函数,之后的事情交给onEvent来负责。file:system/vold/NetlinkHandler.cpp原创 2011-12-26 22:30:29 · 9088 阅读 · 2 评论 -
Android磁盘管理-之vold源码分析(3)
作者:gzshun. 原创作品,转载请标明出处!NetlinkManager类负责管理捕获内核的uevent事件,这里使用了Netlink套接字。Netlink的概念:Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。Netlink套接字可以使用标准的套接字APIs来创建。socket(), b原创 2011-12-25 00:02:51 · 8407 阅读 · 1 评论 -
Android磁盘管理-之vold源码分析(2)
作者:gzshun. 原创作品,转载请标明出处!Vold是Android系统处理磁盘的核心部分,取代了原来Linux系统中的udev,主要用来处理Android系统的热插拔存储设备。在Android2.2以后的系统中,vold源码已经移到了system目录下,vold目录包含以下源码:├── Android.mk├── Asec.h├── CleanSpec.mk├原创 2011-12-23 22:38:34 · 15028 阅读 · 7 评论 -
Android磁盘管理-系统源码分析(1)
作者:gzshun. 原创作品,转载请标明出处!本系列文章,将会详细讲解Android系统的磁盘管理部分,可以通过这个突破口,熟悉整个Android的系统架构与实现原理。Android磁盘管理总共涉及到四大部分源码:1.Linux kernel: Android建立在Linux内核的基础上,最底层的部分是由Linux kernel来负责的,用于检测热插拔事件;2.V原创 2011-12-22 21:47:59 · 17009 阅读 · 8 评论