init可执行程序的结构都有哪些

  

  作者:华清远见讲师


  init可执行程序是系统运行的第一个用户控件的程序

  它已守护进程的方式运行,它是从linux启动标准自动进入Android系统的入口

  init可执行成程序的代码路径为:system/core/init

  由于是init本身一个可执行程序,而不是库,因此没有给其他部分使用的头文件。

  init的目录中的文件结构比较清晰,各个核心文件如下所示。

  init.c:主入口,包含了main()函数

  parser.h和parser.c:底层的解析功能

  init_parser.h和init_parser.c:init脚本解析的功能。

  keywords.h和builtins.c:关键字的定义和init脚本中命令的处理。

  util.h和util.c工具函数

  logo.h和logo.c:处理开始画面

  property_service.h和property_service.c属性方面的处理

  signal_handler h c :信号方面的处理

  keychords.c:keychord方面的处理

  ueventd.c设备管理分支的入口

  devices.c:设备管理的设备和兴处理功能

  ueventd_parser.c:设备管理的脚本解析功能

  编译结果为可执行文件,安装在TARGET_ROOT_OUT

  静态库链接

  init可执行程序将解析同样位于根目录中的init脚本,执行脚本中的那功能,采用这种方式的原因在于让init可执行程序的功能基本保持固定,定制的工作通过init脚本来执行。

  init脚本位于根目录中,脚本被解析后将放入队列执行,在较新的Android版本中,init脚本有两个,第一个是init.rc,第二个是init.<设备>.rc,它作为额外的启动内容,例如仿真器上使用的第二个init脚本的文件名称为init.goldfish.rc。两个init.rc脚本的语法和作用完全相同,知识前者用于通用的工作,后者用于设备相关的工作。

  虽然理论上建议使用设备相关的init脚本中处理设备相关的工作,但是真正实现一个设备时,主init脚本还需要修改。

  关于init脚本的处理,实际上init_parse_config_file()构建一个序列

  真正执行的是execute_one_command()中执行

  系统默认的主init脚本的路径为system/core/rootdir/init.rc

  根据rootdir中的Android.mk文件,init.rc将被安装在根文件系统中。

  源文:http://www.embedu.org/column/3393.html

         >>>更多优秀技术博文每日更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值