Android -- Android Init进程的处理流程分析.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android -- Android Init进程的处理流程分析 最近在看Android Init进程的处理流程,现记录如下。 在Android中,Init进程是Linux内核启动后创建的第一个用户进程,地位非常重要。Init进程的可执行文件在/system/core/init/目录下,我们直接看Init进程的main()函数,该函数的代码处理流程较长,我们分两大段来分析。首先看第一大段: [cpp] view plain copy 在CODE上查看代码片派生到我的代码片 int main(int argc, char** argv) { //检测启动程序的文件名,如果是ueventd或者watchdogd,则执行相应守护进程的主函数,然后退出 if (!strcmp(basename(argv[0]), ueventd)) { return ueventd_main(argc, argv); } if (!strcmp(basename(argv[0]), watchdogd)) { return watchdogd_main(argc, argv); } // Clear the umask. umask(0);//umask设置用户创建文件的默认属性;默认情况下文件的属性是022,这里参数为0,意为该进程创建的文件的属性值将为0777 add_environment(PATH, _PATH_DEFPATH); bool is_first_stage = (argc == 1) || (strcmp(argv[1], --second-stage) != 0); // Get the basic filesystem setup we need put together in the initramdisk // on / and then well let the rc file figure out the rest. if (is_first_stage) {//创建一些基本的目录,并将一些文件系统mount到对应的目录上. //tmpfs、devpts、proc和sysfs都是文件系统 mount(tmpfs, /dev, tmpfs, MS_NOSUID, mode=0755); mkdir(/dev/pts, 0755); mkdir(/dev/socket, 0755); mount(devpts, /dev/pts, devpts, 0, NULL); mount(proc, /proc, proc, 0, NULL); mount(sysfs, /sys, sysfs, 0, NULL); } // We must have some place other than / to create the device nodes for // kmsg and null, otherwise we wont be able to remount / read-only // later on. Now that tmpfs is mounted on /dev, we can actually talk // to the outside world. open_devnull_stdio();//把标准输入、标准输出、标准错误重定向到空设备文件/dev/__null__ klog_init();//创建/dev/__kmsg__设备节点,让进程可以使用kernel的log系统来输出log klog_set_level(KLOG_NOTICE_LEVEL);//设置log等级 NOTICE(init%s started!\n, is_first_stage ? : second stage); if (!is_first_stage) { // Indicate that booting is in progress to background fw loaders, etc. //在/dev目录下创建.booting空文件,表示初始化正在进行;is_bo

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档