您现在的位置: 爱51代码网 >> 范文 >> 文章正文
Android init进程启动过程分析

    queue_builtin_action(property_service_init_action,"property_service_init");毕业论文 
    queue_builtin_action(signal_init_action,"signal_init");
    queue_builtin_action(check_startup_action,"check_startup");
 
    /* execute all the boot actions to get usstarted */
    action_for_each_trigger("early-boot", action_add_queue_tail);
    action_for_each_trigger("boot",action_add_queue_tail);
 
        /* run all property triggers based oncurrent state of the properties */
    queue_builtin_action(queue_property_triggers_action,"queue_propety_triggers");
9.      进入无限循环中for(;;)

   9.1 execute_one_command():[system/core/init/init.c]

      1) 从action_queue取下structaction *act赋给cur_action;

      2) 从cur_action获得struct command *赋给cur_command;

      3) 执行cur_command->func(cur_command->nargs, cur_command->args)

     注1:以上是第一次执行时,如果action中还有command,就不需要1,而2中就是直接再在action上取下一条command即可。

     注2:这里才是真正地命令的执行,前面的action_for_each_trigger()和queue_builtin_action()只是加入到action_queue队列中,而这里是从队列中顺序取出,并执行。

     所以,加入队列action_queue的顺序也就决定了执行的顺序。Init???.rc中action所在的section决定了它们执行的先后次序:early-init -> init -> early-fs -> fs -> post-fs ->early-boot -> boot。

 

   9.2 restart_processes():system/core/init/init.c

      对有SVC_RESTARTING标志的service,执行restart_service_if_needed()

 

  9.3 用poll等待几个事件:property事件/子进程结束的signal事件/keychord

 

   9.4 处理等到的事件

      对property_set事件,调用handle_property_set_fd()处理;

      对keychord事件,调用handle_keychord()处理;

      对signal事件,调用handle_signal()处理;  

 

总结:

本文分析了Android里的init进程的启动过程,从中可以知道init做的主要工作包括对init.rc的解析,property机制的实现,service支撑的实现。详细细节在后面的专题中讨论。

上一页  [1] [2] 

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    mysql主从同步延迟方案解决的学习
    青岛科学六年级下册教材分析
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    青少年吸烟心理探析
    保险受益人制度相关问题的探讨
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    保险受益人制度相关问题的探讨
    初中生地理读图能力培养的研究
    搞笑生日祝福
    应用内购买 In-App Purchase
    Android之Activity的taskAff
    Redis系列-key相关主要操作函
    Redis存储篇sorted set主要操
    把oracle rac 转化为单机数据
    sqlplus spool 到动态日志文
    ios开发之UIButton 点击两张
    android蓝牙串口连接代码
    Preview of Qt 5 for Androi
    VS2010 cocos2d-x 工程配置 
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |