Hello Zhenzhong,
On 2/28/24 04:58, Zhenzhong Duan wrote:
HostIOMMUDevice will be inherited by two sub classes,
legacy and iommufd currently.
Introduce a helper function host_iommu_base_device_init to initialize it.
Suggested-by: Eric Auger <eric.au...@redhat.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.d...@intel.com>
---
include/sysemu/host_iommu_device.h | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
create mode 100644 include/sysemu/host_iommu_device.h
diff --git a/include/sysemu/host_iommu_device.h
b/include/sysemu/host_iommu_device.h
new file mode 100644
index 0000000000..fe80ab25fb
--- /dev/null
+++ b/include/sysemu/host_iommu_device.h
@@ -0,0 +1,22 @@
+#ifndef HOST_IOMMU_DEVICE_H
+#define HOST_IOMMU_DEVICE_H
+
+typedef enum HostIOMMUDevice_Type {
+ HID_LEGACY,
+ HID_IOMMUFD,
+ HID_MAX,
+} HostIOMMUDevice_Type;
+
+typedef struct HostIOMMUDevice {
+ HostIOMMUDevice_Type type;
A type field is not a good sign and that's where QOM is useful.
Is vtd_check_hdev() the only use of this field ? If so, can we simplify
with a QOM interface in any way ?
Thanks,
C.
+ size_t size;
+} HostIOMMUDevice;
+
+static inline void host_iommu_base_device_init(HostIOMMUDevice *dev,
+ HostIOMMUDevice_Type type,
+ size_t size)
+{
+ dev->type = type;
+ dev->size = size;
+}
+#endif