上一篇最后提到init进程的轮询机制,init进程主要轮询property、signal、组合键等,这里探究一下这几个内容是如何实现的。
要说明这一部分内容,必须先来分析一下init.rc的语法问题
import /init.trace.rc 前文说过,就是在解析完init.rc后把其他XX.rc的内容也解析出来
on early-init
# Set init and its forked children's oom_adj.
write /proc/1/oom_adj -16
# Set the security context for the init process.
# This should occur before anything else (e.g. ueventd) is started.
setcon u:r:init:s0
start ueventd
on关键字对应的就是一个action,一个action里会对应一些command,这个action会被放到action_queue中,里面的command最终会由execute_one_command()执行
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
class main
socket zygote stream 660 root system
onrestart write /sys/android_power/request_state wake
onrestart write /sys/power/state on
onrestart restart media