开始看qemu的代码,写一些笔记备忘吧。

 也算看了不少代码,module.h中的:

#define module_init(function, type)                                                                                 \
static void __attribute__((constructor)) do_qemu_init_ ## function(void) {    \
        register_module_init(function, type);                                                                     \
}    

这个gcc 特性兄弟还是第一次看到,于是总算看懂初始化了怎么回事。

1. 静态定义device/block/machine并在main执行之前初始化。
2. vl.c/main中
module_call_init(MODULE_INIT_MACHINE);
machine = find_default_machine();
把machine拿出来用。