fuchsia学习_启动过程

fuchsia学习_启动过程
电阻加热炉KernelZircon的启动:⾸先运⾏boot-shim.ld的ENTRY(_start);//boot-shim.S的FUNCTION(_start);//start.S汇编代码,之后到lk_main(); ~~//内调zircon/kernel/的lk_main();
~~//创建"bootstrap2"线程,从的lk_init_level(),参数"global_prng_thread_safe";//内调的BecomeThreadSafe(); ~~//线程"bootstrap2"创建成功后执⾏bootstrap2()函数;
~~//创建userboot(内核线程),的lk_main();//内调init.h的lk_primary_cpu_init_level(),参数LK_INIT_LEVEL_LAST;//内调 的lk_init_level(),遍历到"userboot";
~~//内调的userboot_init();//创建,启动;
~~//运⾏userboot(由内核创建;创建bootsvc进程),内调的bootstrap();//内调的
parse_options();之后调⽤的LoaderService::Serve();
内裤加工
~~//转到HandleRequest();//转到LoadObject();//转到TryLoadObject();//内调的bootfs_open(),传⼊参
数"bin/bootsvc";
~~//内调的bootstrap(),创建进程"bin/bootsvc",创建线程;//转到load_child_process();//内调的elf_load_bootfs();
递进式分配器~~//运⾏bootsvc进程(由userboot进程创建;创建devmgr进程),的main();
~~//创建devmgr进程(由bootsvc创建),的main();//内调LaunchNextProcess(),传⼊参
数"bin/component_manager";
~~//运⾏devmgr进程,zircon/system/core/devmgr/的main();//内调的FsManager::WatchExit();
~~//创建driver_manager进程(由bootsvc创建)//...//的Launch();//新建进程,传
⼊"/boot/bin/driver_manager";
z轴线性马达
~~//运⾏driver_manager进程,driver_的main();//内调driver_manager/的
start_console_shell();创建进程;
~~//线程运⾏,driver_manager/的console_starter();//转到SystemInstance::ConsoleStarter();
~~//内调driver_的DevmgrLauncher::LaunchWithLoader(),传⼊参
数"/boot/bin/svchost","/boot/bin/netsvc","/boot/bin/sh","/boot/bin/miscsvc";
~~//"service-starter"运⾏(由driver_的main()创建),运⾏driver_manager/的SystemInstance::service_starter();//内调SystemInstance::ServiceStarter();
~~//driver的初始化(由driver_manager进程发起),driver_的main();//内调的
PrepareProxy();//内调的Coordinator::NewDevhost();
~~//转到dc_launch_devhost(),传⼊参数"driver_host:sys","driver_host:root","driver_host:misc","driver_host:pci",参数由的InitCoreDevices()初始化;
太阳能沼气~~//"driver_host:sys"进程运⾏,driver_的CreateDevice();//内调,传⼊参数"/boot/driver/platform-bus.so";//转到dh_find_driver(),dlopen_vmo(),dlsym();
~~//内调devhost.h的CreateOp();//内调create(),执⾏驱动so库的create();
~~//驱动so库执⾏,的platform_bus_create();//内调PlatformBus::Init();//内调
PlatformBus::GetBoardInfo();
====
处理服务进程的crsah:启动时的main();//内调的start_crashsvc();//内调
thrd_create_with_name(),传⼊crash_svc函数地址;
~~//当出现服务crash时,的crash_svc();//内调channel.h的wait_one(),read();
添加服务:garnet/examples/fidl/echo_server_cpp/echo_的构造函数;//内调sdk/lib/sys/cpp/ 的AddPublicService();
~
~//内调outgoing_directory.h的AddEntry();其中,根是通过PseudoDir->Lookup("svc")获取;//内核
zircon/system/ulib/fs/的AddEntry();//内调EntryByNameMap的insert();95215232
获取服务:garnet/examples/fidl/echo_client_cpp/echo_的Start();
~~//内调component_context.h的Create(),ComponentContext的svc();//的ServiceDirectory::Connect();
~~//内调zircon/system/ulib/的fdio_service_connect_at();//内调的fdio_namespace::Open(); ~~//转到fdio_namespace::WalkLocked();//内核zircon/system/ulib/fs/中PseudoDir继承LocalVnode的
Lookup();//内调EntryByNameMap的find();

本文发布于:2024-09-21 08:42:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/101823.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:创建   进程   启动   服务   线程   汇编
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议