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”;

        …

android Init 相关分析的更多相关文章

  1. android init进程分析 ueventd

    转自:http://blog.csdn.net/freshui/article/details/2132299 (懒人最近想起我还有csdn好久没打理了,这个Android init躺在我的草稿箱中快 ...

  2. Android init.rc解析【转】

    转自:http://www.linuxidc.com/Linux/2014-10/108438.htm 本文主要来自$Android_SOURCE/system/init/readme.txt的翻译. ...

  3. Android init.rc文件格式解析

    /***************************************************************************** * Android init.rc文件格式 ...

  4. Android Init语言

    Android Init语言是一种特别简单的语言,专门用来写Android的Init进程使用的配置文件的. 相当于Linux系统中的rc文件(这句话对于Linux者多半是句废话). Android I ...

  5. Android init.rc文件浅析

    Android init.rc文件浅析 分类: Android2012-04-13 18:00 13149人阅读 评论(2) 收藏 举报 androidservicepathactionsocketc ...

  6. android init进程分析 init脚本解析和处理

    (懒人近期想起我还有csdn好久没打理了.这个android init躺在我的草稿箱中快5年了.略微改改发出来吧) RC文件格式 rc文件是linux中常见的启动载入阶段运行的文件.rc是run co ...

  7. Android init介绍(下)

    上一篇请参考<Android init介绍(上)> 5. AIL 在init启动过程中,系统服务等均是通过解析rc文件来启动,而rc文件则是由Android初始化语言(Android In ...

  8. Android init介绍(上)

    1. 介绍 init进程是Linux系统第一个用户进程,是Android系统应用程序的根进程,即1号进程(PID为1):Android中的init文件位于/init,代码位于system/core/i ...

  9. Android init进程概述

    init进程,其程序位于根文件系统中,在kernle自行启动后,其中的 start_kernel 函数把根文件系统挂载到/目录后,在 rest_init 函数中通过 kernel_thread(ker ...

随机推荐

  1. 图的最短路算法 Floyd

    多源最短路径算法 时间复杂度O(N3) 简单修改可求有向图的传递闭包 #include<iostream> using namespace std; const int maxn=1024 ...

  2. Android ROM 备书

    1. Android ROM 目录接口 我们经常说的刷ROM是刷系统的意思,但是ROM的原意并不是这样,ROM的全称是read only memory只读储存器,正因为它是“只读”的,而且系统文件通常 ...

  3. Linux选型:开源不是免费 首选红帽和SUSE

    首发:http://tech.it168.com/a2014/0324/1606/000001606245.shtml 企业级服务器系统选型报告:http://www.it168.com/redian ...

  4. 图说苹果工作站-MAC PRO

    图说苹果工作站-MACPRO MacPro是苹果电脑公司(Apple)推出的高阶桌上型电脑(上一代产品叫做PowerMacG5),搭载英特尔(Intel)"Xeon"微处理器以及& ...

  5. 使用throws抛出异常

    声明抛出异常实在一个方法声明的throws子句中指明的.throws子句方法的基本形式如下.方法 throws 异常列表{ }throws子句中可以指明多个异常,说明该方法不对这些异常进行处理,而是抛 ...

  6. ASP.NET MVC学习1

    ViewBag是一个dynamic(动态类型)类型集合,可以动态添加任何类型的任意名称的属性和值,ViewBag是Controller和view之间传递数据的,如以下: ViewBag.HtmlStr ...

  7. C# 最原始的tree 递归使用

    ; i < dr.Rows.Count; i++)             {                 )                 {                     n ...

  8. JS常用的设计模式(13)——组合模式

    组合模式又叫部分-整体模式,它将所有对象组合成树形结构.使得用户只需要操作最上层的接口,就可以对所有成员做相同的操作. 一个再好不过的例子就是jquery对象,大家都知道1个jquery对象其实是一组 ...

  9. php mkdir函数

    if(!is_dir($targetPath)){mkdir($targetPath, 0700); } is_dir 判断目录是否存在 mkdir 不能创建多级目录

  10. 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(五)-- Filter

    在上一篇里,介绍了中间件的相关内容和使用方法.本篇将介绍Asp.Net Core MVC框架的过滤器的相关内容和使用方法,并简单说明一下与中间件的区别. 第一部分.MVC框架内置过滤器 下图展示了As ...