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: