smmu_device_add_pci()
QNX SDP8.0SMMUMAN User's GuideAPIConfigurationUtilities
Add a PCI device to a SMMU object, or remove it
Synopsis:
#include <smmu.h> int smmu_device_add_pci(struct smmu_object *const sop, unsigned const pbus, unsigned const pdev, unsigned const pfunc);
Arguments:
- sop
- Pointer to the SMMU object to which the device will be attached, or NULL to remove the device from any SMMU objects owned by the current client.
- pbus
- The PCI device's bus number.
- pdev
- The PCI device's device number.
- pfunc
- The PCI device's function number.
For pbus, pdev, and pfunc, you can use the SMMU_PCI_FIELD_ANY constant for wildcarding.
CAUTION:
If you use wildcarding for all bus, device and function combinations, smmu_device_add_pci() checks the buses, devices, and functions on the entire system, which may take a long time.
To avoid this, use wildcarding for only one or two of bus, device, function.
Library:
libsmmu.aDescription:
The smmu_device_add_pci() function is a convenience function. It calls smmu_device_add_generic() to add a Peripheral Component Interconnect (PCI) device to a SMMU object.
To remove a PCI device from SMMU objects, call this function with the sop argument set to NULL.
Returns:
- -1
- Failure: errno is set.
- EBUSY
- Failure when attempting to add to a SMMU object a DMA device that is owned by another smmuman client.
- ENOENT
Failure: when attempting to:
- add a device – the smmuman service doesn't know which IOMMU/SMMU unit controls the device being added
- remove a device – the smmuman client making the call doesn't own the SMMU object to which the device is attached
- 0
- Success
- +1
- Success, but the client must call smmu_mapping_add() to reissue
the memory mappings for this object (see
Preferred sequence for adding memory mappings and devices
for more information about why memory mappings may need to be reissued).
Page updated: