QEMU代码分析(1)-module_init()构造函数

本文详细介绍了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链表。
摘要由CSDN通过智能技术生成

最近在看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)               
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值