.class_init = my_device_class_init, }; static void my_device_register_types(void) { type_register_static(&my_device_info); } type_init(my_device_register_types) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26...
.class_init = i440fx_pcihost_class_init, }; /* 根据 QOM,一个 DeviceClass 的子类,会在其类型初始化时,对 DeviceClass 部分的 realize 回调进行设置 * 该回调会在设备初始化时,也就是对该设备的“realized”属性写入 true 时被触发 */ static void i440fx_pcihost_class_init(ObjectClass *klass, vo...
DeviceClass *dc = DEVICE_CLASS(class); VMStateIfClass *vc = VMSTATE_IF_CLASS(class); ResettableClass *rc = RESETTABLE_CLASS(class); class->unparent = device_unparent; dc->hotpluggable = true; dc->user_creatable = true; vc->get_id = device_vmstate_if_get_id; rc->get_state = d...
static void mem_pci_class_init(ObjectClass *klass, void *data) { PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass); k->init = mem_pci_init; k->vendor_id = MEM_PCI_VENDOR_ID; k->device_id = MEM_PCI_DEVICE_ID; k->revision = MEM_PCI_REVISION_...
7. 会首先调用DeviceClass的realize函数即virtio_pci_dc_realize。该函数是在virtio_pci_class_init中设置的。 image 8. 父类的realize函数会一次调用子类的realize函数。接着会调用PCIDeviceClass的realize函数即pci_qdev_realize。 9. 然后依次调用VirtioPCIClass、VirtioBalloonPCIClass的realize函数。从而实现了Virtio...
DeviceClass --- DeviceState --- device_type_info PCIDeviceClass --- PCIDevice --- pci_device_type_info nullptr --- PCIBridge --- pci_bridge_type_info PCIE PCI Express Root Port DeviceClass --- DeviceState --- device_type_info ...
备注:看到了DeviceClass和DeviceState,这个是QEMU设备管理框架里的重要元素。 1)Class后缀表示一类方法实现,是相应设备类型的一类实现,对于同一设备类型的多个设备是通用的,不管创建几个virtio-pci-net设备,只需要一份VirtioPciClass。 2)State后缀表示具体的instance实体,每创建一个设备都要实例化一个instance结构。创建...
DeviceClass *dc = DEVICE_CLASS(klass); dc->realize = stm32f205_soc_realize; dc->props = stm32f205_soc_properties; }staticconstTypeInfo stm32f205_soc_info = { .name = TYPE_STM32F205_SOC, .parent = TYPE_SYS_BUS_DEVICE, .instance_size =sizeof(STM32F205State), ...
UniversalSerialBusDeviceClass:SmartCardCCIDSpecificationforIntegratedCircuit(s)CardsInterfaceDevicesRevision1.1April22rd,2005 智能卡用于身份验证、单点登录、公共/私有方案中的解密和数字签名。客户端上的智能卡读卡器不能在具有简单 USB 直通的来宾上使用,因为它在客户端上不可用,在“删除”计算机时可能会锁定计算机。
DeviceClass parent_class; /* public */ MemoryRegion *(*get_memory_region)(PCDIMMDevice *dimm); } PCDIMMDeviceClass; 每个PCDIMMDevice对象都与 HostMemoryBackend对象相关联。HostMemoryBackend也是使用QEMU中的面向对象编程模型QOM定义的。HostMemoryBackend定义在include/sysemu/hostmem.h中。HostMemoryBackend对象...