start_class core 具体执行了啥
来源:互联网 发布:淘宝如何开通淘金币 编辑:程序博客网 时间:2024/05/18 00:45
在android\system\core\rootdir\init.rc的 on boot最后start_class core
on boot ........class_start coreon nonencrypted class_start main class_start late_start
在android\system\core\init\keyword.h中对应的定义:
KEYWORD(class_start, COMMAND, 1, do_class_start)
在android\system\core\init\builtin.c中:
int do_class_start(int nargs, char **args){ /* Starting a class does not start services * which are explicitly disabled. They must * be started individually. */ service_for_each_class(args[1], service_start_if_not_disabled); return 0;}
在android\system\core\init\init_parse.c中:
void service_for_each_class(const char *classname, void (*func)(struct service *svc)){ struct listnode *node; struct service *svc; list_for_each(node, &service_list) { svc = node_to_item(node, struct service, slist); if (!strcmp(svc->classname, classname)) { func(svc); } }}
对每一个core service执行:
service_start_if_not_disabled //定义在builtin.c
static void service_start_if_not_disabled(struct service *svc){ if (!(svc->flags & SVC_DISABLED)) { service_start(svc, NULL); } else { svc->flags |= SVC_DISABLED_START; }}
继而走到service_start()中,定义在android\system\init\init.c
void service_start(struct service *svc, const char *dynamic_args){ struct stat s; pid_t pid; int needs_console; int n; char *scon = NULL; int rc; //...pid = fork();if (pid == 0) { //....... execve(svc->args[0], (char**) arg_ptrs, (char**) ENV);}}
从init进程,fork出子进程,然后执行service进程
/system/bin/sysmon
/system/bin/logd
/sbin/healthd
/system/bin/prepare_param.sh /dev/block/platform/sdio_emmc/by-name/PARAM
/system/bin/lmkd
/system/bin/servicemanager
/system/bin/vold
/system/bin/surfaceflinger
另外
/sbin/eventd, 已经在on early-init中被启动了
被disabled的几个,也不在此时启动:
/system/bin/sh
/sbin/adbd --root_seclabel=u:r:su:s0
/system/bin/bootanimation
/system/bin/simpletest
0 0
- start_class core 具体执行了啥
- Core Data的具体使用
- CWinApp::OnFileOpen函数按照先后次序具体执行了哪些行为
- 执行gdb a.out core的时候运行a.out了吗? a.out和core要对应吗?
- struts的具体执行过程
- jquery执行具体的方法
- for()循环 具体执行顺序
- struts2的具体执行流程
- class_start main 执行了啥?
- 函数在内存中的具体执行
- gcc编译的具体执行过程
- TagSupport类的生命周期具体执行过程
- C++ 构造函数的具体执行步骤
- 88-zend_execute的具体执行过程
- Spark Job具体的物理执行
- mysql 查找具体sql执行性能
- Core dump去哪里了?
- .NET Core 2.0发布了
- GraphicsMagick在centos环境的安装
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 B-大钉骑马走江湖【bfs】
- com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field 异常
- SQL-更新和删除数据
- OpenCV ARM移植(交叉编译opencv) arm-oe-linux-gnueabi-gcc编译opencv3.1.0
- start_class core 具体执行了啥
- 那些年,我们用来“躲避”杀毒软件的工具
- 27-Roman to Integer-Leetcode
- 条形码类型及常见条形码介绍
- iOS Block底层实现原理详解
- mysql 中 character set 与 collation 的点滴理解(collation即比对方法,用于对应字符集的数据集如何排序以及字符串的比对规则)
- 记一次中文乱码解决过程
- spring boot 学习笔记(1)
- centos7 安装 elastic search 2.3.2