| Updated: October 28, 2024 |
Data structures used by the SMMUMAN client API
The following data structures are defined in the smmu.h header file for the SMMUMAN client API.
union smmu_devid {
unsigned type;
struct smmu_devid_pci pci;
struct smmu_devid_mmio mmio;
_Uint64t __spacer[4];
};
The smmu_devid data structure is used to identify devices. Its members include:
struct smmu_devid_mmio {
unsigned type;
unsigned length;
_Uint64t phys;
};
The smmu_devid_mmio data structure is used to identify MMIO devices. Its members include:
struct smmu_devid_pci {
unsigned type;
unsigned bus;
unsigned dev;
unsigned func;
};
The smmu_devid_pci is used to identify PCI devices. Its members include:
If you set bus, dev, or func to SMMU_PCI_FIELD_ANY, any value is allowed.
struct smmu_map_entry {
union {
void *virt;
_Uint32t virt32;
_Uint64t virt64;
_Uint64t phys;
};
_Uint64t len;
};
The smmu_map_entry data structure is used by the smmu_device_report_reserved() and smmu_mapping_add() functions; it includes the following members:
For more information about guest-physical and host-physical addresses and memory, see the QNX Virtual Environments chapter in the QNX Hypervisor User's Manual.
struct smmu_status {
_Uint64t hw_specific;
_Uint64t fault_addr;
union smmu_devid devid;
unsigned flags;
};
The smmu_status data structure is used by the smmu_xfer_status() function; it carries information about DMA device transgressions, and includes the following members: