zoukankan      html  css  js  c++  java
  • android Init 相关分析

    Init.c主要工作

    1. 初始化属性(包括建立/dev、/proc等目录、初始化属性、log、执行init.rc等初始化文件中的action等)。

    2. 解析配置文件的命令(主要是init.rc文件),包括处理各种Action。

    3. 初始化属性服务器

    4. 无限循环执行command(启动其他的进程)。

    需知ramdisk.img中存放init.c文件

    一下分析一些重要函数。

    property_init();

      1.import /init.${ro.hardware}.rc导入其他配置文件。

      2.加载default.prop文件

      3.把属性内存区域创建在共享内存上,(init_workspace()),映射到本地进程空间。

      4.当属性服务器收到客户端请求uevent=POLLIN时

           执行handle_property_set_fd()

           (setprop ctl.start bootanim命令就执行开机动画。

      5.客户端发送请求(properties.c)->property_set()中

    get_hardware_name(hardware, &revision);

      打开/proc/cpuinfo文件中获取Hardware字段的值(小写)

      不难看出获取到的hardware字段值是用在import /init.${ro.hardware}.rc中。

    process_kernel_cmdline();

      import CMD命令,通过内核的属性设置应用层配置文件的属性。

    Init.rc

    1.文件内容:

        On init: section init

        On boot: section boot

               …

       * Class_start defult 这是一个COMMAND,对应函数do_class_start

        service  也是一个section

    2.解析section的函数:

    parse_new_section(state,kw,nargs,args);

       case:K_service: //service section

      parse_service(state, nargs,args);

        service->classname=”default”;

            …

  • 相关阅读:
    python 面向对象
    python 序列化模块
    python 正则表达式与re模块
    python 内置函数(二)
    python 内置方法
    Hibernate —— Hibernate 配置文件
    搭建 Hexo Blog
    Hibernate —— 概述与 HelloWorld
    Intellij Idea 15 下新建 Hibernate 项目以及如何添加配置
    项目中遇到的问题
  • 原文地址:https://www.cnblogs.com/hongguang-kim/p/4809257.html
Copyright © 2011-2022 走看看