接前一篇文章:QEMU源码全解析6 —— QEMU参数解析(6)
本文内容参考:
《趣谈Linux操作系统》 —— 刘超,极客时间
《QEMU/KVM》源码解析与应用 —— 李强,机械工业出版社
特此致谢!
本系列前几篇文章一直在围绕QEMU参数解析进行讲解,本篇文章开始我们换一个角度研究,从QEMU主函数作为入口进行深入。
前边文章提到QEMU的主函数是softmmu/vl.c中的qemu_init(),实际上并不是,而是真正有main函数的。老版本的main函数位于softmmu/vl.c中;而在较新的版本(笔者的版本是qemu-7.1.0)中,main函数被单独放到了softmmu/main.c中。代码如下:
int qemu_main(int argc, char **argv, char **envp)
{
int status;
qemu_init(argc, argv, envp);
status = qemu_main_loop();
qemu_cleanup();
return status;
}
#ifndef CONFIG_COCOA
int main(int argc, char **argv)
{
return qemu_main(argc, argv, NULL);
}
#endif
本文从QEMU主函数入手,探讨QEMU的执行流程。在新版QEMU(如7.1.0)中,主函数位于softmmu/main.c,实际工作由qemu_main()完成,该函数包括qemu_init、qemu_event_loop、qemu_cleanup三个关键部分。qemu_init函数中调用module_call_init(MODULE_INIT_OPTS)初始化所有Module,为后续分析打下基础。
订阅专栏 解锁全文
393

被折叠的 条评论
为什么被折叠?



