最近在看QEMU2.0源代码,决定把看的东西记录下来。一方面方便自己查阅,另一方面可以给看QEMU的同学参考。
QEMU中使用了很多构造函数,这些构造函数会在执行main()函数之前就执行,初始化一些数据结构。module_init()就是典型代表。
1.module_init调用关系图如下:
2. 函数分析
(1) module_init函数定义(module.h)
#define module_init(function, type) \
static void __attribute__((constructor)) do_qemu_init_ ## function(void) \
{ \
register_dso_module_init(function, type); \
}
#else
/* This should not be used directly. Use block_init etc. instead. */
#define module_init(function, type) \
static void __attrib

本文详细介绍了QEMU2.0中module_init()构造函数的作用和调用过程。module_init用于初始化数据结构,其通过register_module_init()函数将特定类型的init函数挂接到对应的QTAIL链表中。在调用module_call_init()时,会遍历链表执行所有挂接的init函数。例如,在hw/i386/pc_piix.c和hw/i386/smbios.c中,module_init被用来绑定不同类型的init函数到MODULE_INIT_MACHINE链表。
最低0.47元/天 解锁文章
1312

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



