最近在看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)