Android SDCard Mount 流程分析(一)
来源:互联网 发布:淘宝买表 编辑:程序博客网 时间:2024/05/16 14:57
转自:http://terryblog.blog.51cto.com/1764499/826656/
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://terryblog.blog.51cto.com/1764499/826656
本篇大纲
- android 系统如何开机启动监听mount服务
- 默认挂载点在Android 系统的哪个目录
- vold.fstab 配置文件的分析
- vold 里面启动页面main做了些什么
android 系统如何开机启动监听mount服务
service vold /system/bin/vold
socket vold stream 0660 root mount
ioprio be 2
socket vold stream 0660 root mount
ioprio be 2
默认挂载点在Android 系统的哪个目录
mkdir("/dev/block/vold", 0755);
sh-4.1# ls /dev/block/vold/
179:0 179:1 8:0 8:1 8:2 8:3 8:4
179:0 179:1 8:0 8:1 8:2 8:3 8:4
vold.fstab 配置文件的分析
/system/core/rootdir/etc/vold.fstab
dev_mount sdcard /mnt/sdcard auto /devices/platform/goldfish_mmc.0 /devices/platform/msm_sdcc.2/mmc_host/mmc1
dev_mount sdcard external /mnt/sdcard auto /devices/platform/mmci-omap-hs.0/mmc_host/mmc0 /devices/platform/mmci-omap-hs.0/mmc_host/mmc1
dev_mount usb1 external /mnt/usbdisk/usb1-disk%d all /devices/platform/ehci-omap.0/usb1/1-2/1-2.1/
dev_mount usb2 external /mnt/usbdisk/usb2-disk%d all /devices/platform/ehci-omap.0/usb1/1-2/1-2.2/
dev_mount usb3 external /mnt/usbdisk/usb3-disk%d all /devices/platform/ehci-omap.0/usb1/1-2/1-2.3/
dev_mount usb1 external /mnt/usbdisk/usb1-disk%d all /devices/platform/ehci-omap.0/usb1/1-2/1-2.1/
dev_mount usb2 external /mnt/usbdisk/usb2-disk%d all /devices/platform/ehci-omap.0/usb1/1-2/1-2.2/
dev_mount usb3 external /mnt/usbdisk/usb3-disk%d all /devices/platform/ehci-omap.0/usb1/1-2/1-2.3/
if (!(fp = fopen("/etc/vold.fstab", "r"))) {
return -1;
}
return -1;
}
if (!strcmp(type, "dev_mount")) {
DirectVolume *dv = NULL;
char *part;
if (!(part = strtok_r(NULL, delim, &save_ptr))) {
SLOGE("Error parsing partition");
goto out_syntax;
}
if (strcmp(part, "auto") && atoi(part) == 0) {
SLOGE("Partition must either be 'auto' or 1 based index instead of '%s'", part);
goto out_syntax;
}
if (!strcmp(part, "auto")) {
dv = new DirectVolume(vm, label, mount_point, -1);
} else {
dv = new DirectVolume(vm, label, mount_point, atoi(part));
}
while ((sysfs_path = strtok_r(NULL, delim, &save_ptr))) {
if (*sysfs_path != '/') {
/* If the first character is not a '/', it must be flags */
break;
}
if (dv->addPath(sysfs_path)) {
SLOGE("Failed to add devpath %s to volume %s", sysfs_path,
label);
goto out_fail;
}
}
/* If sysfs_path is non-null at this point, then it contains
* the optional flags for this volume
*/
if (sysfs_path)
flags = parse_mount_flags(sysfs_path);
else
flags = 0;
dv->setFlags(flags);
vm->addVolume(dv);
}
DirectVolume *dv = NULL;
char *part;
if (!(part = strtok_r(NULL, delim, &save_ptr))) {
SLOGE("Error parsing partition");
goto out_syntax;
}
if (strcmp(part, "auto") && atoi(part) == 0) {
SLOGE("Partition must either be 'auto' or 1 based index instead of '%s'", part);
goto out_syntax;
}
if (!strcmp(part, "auto")) {
dv = new DirectVolume(vm, label, mount_point, -1);
} else {
dv = new DirectVolume(vm, label, mount_point, atoi(part));
}
while ((sysfs_path = strtok_r(NULL, delim, &save_ptr))) {
if (*sysfs_path != '/') {
/* If the first character is not a '/', it must be flags */
break;
}
if (dv->addPath(sysfs_path)) {
SLOGE("Failed to add devpath %s to volume %s", sysfs_path,
label);
goto out_fail;
}
}
/* If sysfs_path is non-null at this point, then it contains
* the optional flags for this volume
*/
if (sysfs_path)
flags = parse_mount_flags(sysfs_path);
else
flags = 0;
dv->setFlags(flags);
vm->addVolume(dv);
}
vold 里面启动页面main做了些什么
0 0
- Android SDCard Mount 流程分析(一)
- Android SDCard Mount 流程分析(一)
- Android SDCard Mount 流程分析(一)
- Android SDCard Mount 流程分析(一)
- Android SDCard Mount 流程分析(一)
- Android SDCard Mount 流程分析(二)
- Android SDCard Mount 流程分析
- Android SDCard Mount 流程分析
- Android SDCard Mount 流程分析
- Android SDCard Mount 流程分析
- Android SDCard Mount 流程分析
- Android SDCard Mount 流程分析
- Android SDCard Mount 流程分析
- Android SDCard Mount 流程分析
- Android SDCard Mount 流程分析
- Android SDCard Mount流程分析(一)(二)(三)
- Android SDCard Mount流程分析(一)(二)(三)
- SDCard Mount 流程分析(二)
- 如何下架自己的app
- 当心无符号数据给你带来的麻烦!!!
- 解决 Apple Mobile Device USB Driver 安装失败或iphone usb连接不识别 window环境
- macbook 无法安装gem pg的解决方案
- error: initializing argument 3 of ‘int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)
- Android SDCard Mount 流程分析(一)
- OpenStack_Swift源码分析——Object-auditor源码分析(1)
- 不要shouye
- mac jdbc连接mysql
- win8 笔记本 运行程序 报错
- 机器学习基础知识(二) ---- 基础知识集锦
- 用c++模拟直线插补和圆弧插补
- 益阳拓展训练
- 感觉状态有点差