【CGroupAndroid实践篇】四、Native Service进程启动及控制组迁移

写在前面

承接上一篇,在cgroup子系统初始化完成后,init会继续执行开机流程,且通过代哦用ExecuteCommand()函数。

/system/core/init/init.cpp

int SecondStageMain(int argc, char** argv) {
        ......
        ActionManager& am = ActionManager::GetInstance();
        am.ExecuteOneCommand();
        ......
    };

return builtin_function;

}

一,Native服务启动

那么,如上所述,init进程在解析或init.rc文件或则其他rc文件时,会通过start指令触发一些native服务的启动。或者以组的方式进行启动,以surfaceflinger为例如下:

/system/core/rootdir/init.rc
on boot
class_start core
/frameworks/native/services/surfaceflinger/surfaceflinger.rc

service surfaceflinger /system/bin/surfaceflinger
    class core animation

init解析到start命令后会调用相应的函数do_start,来初始化相关的服务。

二,进程控制组迁移

我们来看下rc文件中如何通过start指令来触发native进程的启动。

/system/core/init/builtins.cpp

// Builtin-function-map start
cons

猜你喜欢

转载自blog.csdn.net/huangyabin001/article/details/132257987