(ERROR) << "epoll_create1 failed"; exit(1); } signal_handler_init(); property_load_boot_defaults(); export_oem_lock_status(); start_property_service(); set_usb_controller(); const BuiltinFunctionMap function_map; Action::set_function_map(&function_map); Parser& parser = Parser::...
init是Linux系统中用户空间的第一个进程(pid=1),Linux Kernel启动后,会调用/system/core/init/Init.cpp的main()方法 那我们就来看下init.cpp的main()里面的具体实现 代码在init.cpp989行 代码语言:javascript 代码运行次数:0 运行 AI代码解释 int main(int argc, char** argv) { // *** 第一部分 ***...
一、init.rc文件格式 init.rc文件是以“块”(section)为单位服务的,,一个“块”(section)可以包含多行。“块”(section)分成两大类:一类称为"动作(action)",另一类称为“服务(service)”。 动作(action):以关键字"on" 开头,表示一堆命令 服务(service):以关键字“service”开头,表示启动某个进程的方式和...
platform/system/core/init/ueventd.cpp platform/system/core/init/selinux.cpp platform/system/core/init/subcontext.cpp platform/system/core/base/logging.cpp platform/system/core/init/first_stage_init.cpp platform/system/core/init/first_stage_main.cpp platform/system/core/init/first_stage_mount.cpp ...
InitKernelLogging(argv);constBuiltinFunctionMap function_map;returnSubcontextMain(argc, argv, &function_map); } 从这里可以看出 init 进程的代码里也包含了另外两个守护进程的代码,因为这几个守护进程的代码重合度高,所以,开发人员干脆把它们都放在一起了。但是在编译时,Android 生成了两个指向 init 文件的...
答案就是在init.cpp的main函数中: ... const BuiltinFunctionMap function_map; Action::set_function_map(&function_map); ... 1. 2. 3. 4. Action中调用function_map_->FindFunction时,实际上调用的是BuiltinFunctionMap的FindFunction函数。FindFunction是keyword定义的通用函数,重点是重构的map函数。所以需...
// EntryFunction.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { return 0; } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 1.使用/MD选项 F9下断到main函数的标签处,F11后,在Call Stack中回溯到_tmainCRTStartup(),当前文件为crtexe.c。
start_property_service();//2const BuiltinFunctionMap function_map; Action::set_function_map(&function_map); Parser&parser=Parser::GetInstance(); parser.AddSectionParser("service",std::make_unique<ServiceParser>()); parser.AddSectionParser("on",std::make_unique<ActionParser>()); ...
system/core/Selinux.cpp // This function initializes SELinux then execs init to run in the init SELinux context. int SetupSelinux(char** argv) { InitKernelLogging(argv); if (REBOOT_BOOTLOADER_ON_PANIC) { InstallRebootSignalHandlers(); } // Set up SELinux, loading the SELinux policy....
strcmp(argv[1], "subcontext")) { android::base::InitLogging(argv, &android::base::KernelLogger); const BuiltinFunctionMap& function_map = GetBuiltinFunctionMap(); return SubcontextMain(argc, argv, &function_map); } if (!strcmp(argv[1], "selinux_setup")) { return SetupSelinux(argv...