void (*instance_init)(Object *obj); void (*instance_post_init)(Object *obj); void (*instance_finalize)(Object *obj); bool abstract; size_t class_size; void (*class_init)(ObjectClass *klass, void *data); void (*class_base_init)(ObjectClass *klass, void *data); void *class_data; ...
1.QOM模型,先执行class_init初始化函数,类似C++中构造函数,在new对象的时候调用 2.QOM模型,instance_finalize实例化函数,本类的具体实现 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 主线程kvm初始化 |-qemu_init |-module_call_init(MODULE_INIT_QOM); //vl.c |-kvm_type_init //初始化注册kvm类...
抽象的 X86 CPU 类型(TYPE_X86_CPU):.instance_init = x86_cpu_initfn,.class_init = x86_cpu_common_class_init host 透传的 cpu 类型(host-TYPE_X86_CPU):.class_init = host_x86_cpu_class_init,.instance_init = host_x86_cpu_initfn qemu 模拟的 cpu 类型(qemu64-TYPE_X86_CPU 等):.class_...
void (*class_init)(ObjectClass *klass, void *data); void (*class_base_init)(ObjectClass *klass, void *data); void (*class_finalize)(ObjectClass *klass, void *data); void *class_data; /*实例的Contructor & Destructor*/ void (*instance_init)(Object *obj); void (*instance_post_init)(...
初始化函数 class_init 代码底部有typeinit函数,可以看到这个函数实际是执行的registermodule_init,由于有`__attribute((constructor))`关键字,所以这个函数会在main函数之前执行。 type_init(pci_strng_register_types)#definetype_init(function) module_init(function, MODULE_INIT_QOM)#definemodule_init(function, ...
PCIHostBridgeClass --- PCIHostState --- pci_host_type_info nullptr --- PCIExpressHost --- pcie_host_type_info nullptr --- Q35PCIHost --- q35_host_info 其中main_system_bus 是系统总线,在pc_q35_init中初始化的q35_host是北桥芯片
staticvoid__attribute__((constructor))do_qemu_init_ ##function(void)\{\register_module_init(function,type);\} 这里我们主要关心这个__attribute__((constructor))这是一个gcc的扩展,意味着这个函数在main函数调用之前就会被调用,这样看来,如果传入的function函数名为kvm_accel_class_init,这个宏的作用就是...
.class_init = stm32f205_soc_class_init, }; 下面分析stm32f205_soc_realize的实现 初始化flash和sram stm32f205的内存映射如下 stm32f205_soc_realize主要实现了红框标注的三个内存区域 位于0x8000000处的flash区域 位于0x0处的区域,是flash的alias区域 ...
qemu_set_version(machine_class->hw_version); } cpudef_init初始化支持的cpu feature,可以通过如下命令查询当前qemu支持的cpu feature /usr/bin/qemu-system-x86_64 -cpuhelpif(cpu_model && is_help_option(cpu_model)) { list_cpus(stdout, &fprintf, cpu_model);exit(0); ...
void __fastcall FastCP_class_init(ObjectClass_0 *a1, void *data){PCIDeviceClass *v2; // rbxPCIDeviceClass *v3; // rax v2 = (PCIDeviceClass *)object_class_dynamic_cast_assert(a1,"device","/root/source/qemu/hw/misc/fastcp.c",293,"FastCP_class_init");v3 = (PCIDeviceClass *)obje...