- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)