文章目录1、QOM简介`register_module_init` 的实现Machine 类型注册Machine 类定义MachineClass 结构体定义MachineState 结构体定义virt 机器初始化流程自定义设备初始化1、QOM简介QEMU Object Model (QOM) 是 QEMU 中的一种对象系统,用于实现 QEMU 设备模型和设备模拟功能(面向对象的机制)。QEMU Object Model (QOM) 是 QEMU 中的一种对象系统:一个支持动态地注册 “类” 的系统“类” 的单继承“无状态接口” 的多重继承QEMU的Machine通过QOM进行抽象:https://qemu.readthedocs.io/en/latest/devel/qom.html(QEMU官方文档)。QOM注册类的流程如下所示(qemu5以上版本为例,qemu4中类的注册通过宏完成):QOM 中定义一个类 MyType 一般需要 TypeInfo, MyTypeClass, MyTypeState, TypeImpl 等结构,其中 TypeInfo 是用户定义类时提供的该类的信息,其会在注册到系统时被转换成 TypeImpl, MyTypeClass 与 MyTypeState 两个结构体分别是类与该类的对象的结构体,前者提供该类的虚函数列表供子类实现,后者记录了该类的对象的相关信息。QOM中的注册的类在main函数执行之前会被添加到链表中,就是通过type_init将对应设备注册到了系统中,ty
QEMU理解与分析系列(5):RISCV虚拟版卡初始化
发布时间:2026/5/19 17:16:12
文章目录1、QOM简介`register_module_init` 的实现Machine 类型注册Machine 类定义MachineClass 结构体定义MachineState 结构体定义virt 机器初始化流程自定义设备初始化1、QOM简介QEMU Object Model (QOM) 是 QEMU 中的一种对象系统,用于实现 QEMU 设备模型和设备模拟功能(面向对象的机制)。QEMU Object Model (QOM) 是 QEMU 中的一种对象系统:一个支持动态地注册 “类” 的系统“类” 的单继承“无状态接口” 的多重继承QEMU的Machine通过QOM进行抽象:https://qemu.readthedocs.io/en/latest/devel/qom.html(QEMU官方文档)。QOM注册类的流程如下所示(qemu5以上版本为例,qemu4中类的注册通过宏完成):QOM 中定义一个类 MyType 一般需要 TypeInfo, MyTypeClass, MyTypeState, TypeImpl 等结构,其中 TypeInfo 是用户定义类时提供的该类的信息,其会在注册到系统时被转换成 TypeImpl, MyTypeClass 与 MyTypeState 两个结构体分别是类与该类的对象的结构体,前者提供该类的虚函数列表供子类实现,后者记录了该类的对象的相关信息。QOM中的注册的类在main函数执行之前会被添加到链表中,就是通过type_init将对应设备注册到了系统中,ty