WEB开发网
开发学院手机开发Android 开发 Android 根文件系统启动分析 阅读

Android 根文件系统启动分析

 2010-05-08 18:36:00 来源:WEB开发网   
核心提示:如果device_fd的revents为POLLIN,调用handle_device_fd * - 如果property_fd的revents为POLLIN,调用handle_property_set_fd * - 如果keychord_fd的revents为POLLIN,调用handle_keychord */ fo
如果device_fd的revents为POLLIN,调用handle_device_fd * - 如果property_fd的revents为POLLIN,调用handle_property_set_fd * - 如果keychord_fd的revents为POLLIN,调用handle_keychord */ for(;;) { int nr, i, timeout = -1; for (i = 0; i < fd_count; i++) ufds[i].revents = 0; drain_action_queue(); restart_processes(); if (process_needs_restart) { timeout = (process_needs_restart - gettime()) * 1000; if (timeout < 0) timeout = 0; }#if BOOTCHART if (bootchart_count > 0) { if (timeout < 0 || timeout > BOOTCHART_POLLING_MS) timeout = BOOTCHART_POLLING_MS; if (bootchart_step() < 0 || --bootchart_count == 0) { bootchart_finish(); bootchart_count = 0; } }#endif nr = poll(ufds, fd_count, timeout); if (nr <= 0) continue; if (ufds[2].revents == POLLIN) { /* we got a SIGCHLD - reap and restart as needed */ read(signal_recv_fd, tmp, sizeof(tmp)); while (!wait_for_one_process(0)) ; continue; } if (ufds[0].revents == POLLIN) handle_device_fd(device_fd); if (ufds[1].revents == POLLIN) handle_property_set_fd(property_set_fd); if (ufds[3].revents == POLLIN) handle_keychord(keychord_fd); } return 0;}

2、启动脚本init.rc

Android中使用启动脚本init.rc,可以在系统的初始化过程中进行一些简单的初始化操作。这个脚本被直接安装到目标系统的根文件系统中,被init可执行程序解析。 init.rc是在init启动后被执行的启动脚本,其余发主要包含了以下内容:

Commands:命令

Actions:动作

Triggers:触发条件

Services:服务

Options:选项

Propertise:属性

Commands是一些基本的操作,例如:

mkdir /sdcard 0000 system system mkdir /system mkdir /data 0771 system system mkdir /cache 0770 system cache mkdir /config 0500 root root mkdir /sqlite_stmt_journals 01777 root root mount tmpfs tmpfs /sqlite_stmt_journals size=4m

这些命令在init可执行程序中被解析,然后调用相关的函数来实现。 Actions(动作)表示一系列的命令,通常在Triggers(触发条件)中调用,动作和触发条件例如:

上一页  1 2 3 4 5  下一页

Tags:Android 文件

编辑录入:coldstar [复制链接] [打 印]
赞助商链接