- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9 SD、usb
9 SD/USB
9.1?主流程
文件:system/core/vold/Vold.c
int main(int argc, char **argv)
{
???????...
mkdir(/dev/block/vold, 0755);
???????...
????????/*
?????* Bootstrap
?????*/
?
????bootstrap = 1;
????// Volume Manager
????volmgr_bootstrap();
?
????// SD Card system
????mmc_bootstrap();
?
???????...
????// Switch
????switch_bootstrap();
?
????bootstrap = 0;
???????...
}
volmgr_bootstrap :?加载配置文件
mmc_bootstrap????:?挂载mmc/sdcard
switch_bootstrap???:?连接usb
9.2?加载配置文件
文件:system/core/vold/Volmgr.c
int volmgr_bootstrap(void)
{
????int rc;
?
????if ((rc = volmgr_readconfig(/system/etc/vold.conf)) 0) {
????????LOGE(Unable to process config);
????????return rc;
????}
?
????/*
?????* Check to see if any of our volumes is mounted
?????*/
????volume_t *v = vol_root;
????while (v) {
????????if (_mountpoint_mounted(v-mount_point)) {
????????????LOGW(Volume %s already mounted at startup, v-mount_point);
????????????v-state = volstate_mounted;
????????}
????????v = v-next;
????}
?
????return 0;
}
?
两部分功能:
1?读取配置文件:/system/etc/vold.conf
2?用_mountpoint_mounted检查设备是否挂载,若挂载则状态改为volstate_mounted
?
static int volmgr_readconfig(char *cfg_path)
{
????cnode *root = config_node(, );
????cnode *node;
?
????config_load_file(root, cfg_path);
????node = root-first_child;
?
????while (node) {
????????if (!strncmp(node-name, volume_, 7))
????????????volmgr_config_volume(node);
????????else
????????????LOGE(Skipping unknown configuration node %s, node-name);
????????node = node-next;
????}
????return 0;
}
9.2.1?读取配置文件
config_load_file的功能是将配置文件的信息读出来,然后以cnode链表结构的方式保存。
cnode?结构如下:
struct cnode
{
????cnode *next;
????cnode *first_child;
????cnode *last_child;
????const char *name;
????const char *value;
};
如配置文件:/system/etc/vold.conf
volume_sdcard {
????## This is the direct uevent device path to the SD slot on the device
????media_path?????/devices/platform/msm_sdcc.2/mmc_host/mmc1
????emu_media_path /devices/platform/goldfish_mmc.0/mmc_host/mmc0
?
????media_type?????mmc
????mount_point????/sdcard
????ums_pa
文档评论(0)