54 lines
1.4 KiB
C
54 lines
1.4 KiB
C
![]() |
/*
|
||
|
* Host IOMMU device abstract declaration
|
||
|
*
|
||
|
* Copyright (C) 2024 Intel Corporation.
|
||
|
*
|
||
|
* Authors: Zhenzhong Duan <zhenzhong.duan@intel.com>
|
||
|
*
|
||
|
* This work is licensed under the terms of the GNU GPL, version 2. See
|
||
|
* the COPYING file in the top-level directory.
|
||
|
*/
|
||
|
|
||
|
#ifndef HOST_IOMMU_DEVICE_H
|
||
|
#define HOST_IOMMU_DEVICE_H
|
||
|
|
||
|
#include "qom/object.h"
|
||
|
#include "qapi/error.h"
|
||
|
|
||
|
#define TYPE_HOST_IOMMU_DEVICE "host-iommu-device"
|
||
|
OBJECT_DECLARE_TYPE(HostIOMMUDevice, HostIOMMUDeviceClass, HOST_IOMMU_DEVICE)
|
||
|
|
||
|
struct HostIOMMUDevice {
|
||
|
Object parent_obj;
|
||
|
|
||
|
char *name;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* struct HostIOMMUDeviceClass - The base class for all host IOMMU devices.
|
||
|
*
|
||
|
* Different types of host devices (e.g., VFIO or VDPA device) or devices
|
||
|
* with different backend (e.g., VFIO legacy container or IOMMUFD backend)
|
||
|
* will have different implementations of the HostIOMMUDeviceClass.
|
||
|
*/
|
||
|
struct HostIOMMUDeviceClass {
|
||
|
ObjectClass parent_class;
|
||
|
|
||
|
/**
|
||
|
* @realize: initialize host IOMMU device instance further.
|
||
|
*
|
||
|
* Mandatory callback.
|
||
|
*
|
||
|
* @hiod: pointer to a host IOMMU device instance.
|
||
|
*
|
||
|
* @opaque: pointer to agent device of this host IOMMU device,
|
||
|
* e.g., VFIO base device or VDPA device.
|
||
|
*
|
||
|
* @errp: pass an Error out when realize fails.
|
||
|
*
|
||
|
* Returns: true on success, false on failure.
|
||
|
*/
|
||
|
bool (*realize)(HostIOMMUDevice *hiod, void *opaque, Error **errp);
|
||
|
};
|
||
|
#endif
|