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: