QEMU代码分析(1)中说了,QEMU中有很多构造函数都定义为module_init()。
但是在在main执行之前,都主要执行了哪些构造函数?都做了哪些初始化操作呢?
今天主要讲和CPU相关的type_init(x86_cpu_register_types). (target-i386/cpu.c)
1.调用关系
2.代码分析
2.1 type_register_internal(info)
static TypeImpl *type_register_internal(const TypeInfo *info)
{
TypeImpl *ti;
ti = type_new(info); //根据info信息,创建一个TypeImpl对象
type_table_add(ti); //将TypeTmpl插入一个hash表中(第一次调用会新建hash表)。这个表中就存储了各种不同类型cpu的信息:name, parent,class_init,instance_init...
return ti;
}
2.2 x86_cpu_register_types()
static void x86_cpu_register_types(void)
{
int i;
type