Create a new bus transaction initiator.
#include <zircon/syscalls.h> zx_status_t zx_bti_create(zx_handle_t iommu, uint32_t options, uint64_t bti_id, zx_handle_t* out);
zx_bti_create()
creates a new bus transaction initiator given a handle to an IOMMU and a hardware transaction identifier for a device downstream of that IOMMU.
options must be 0 (reserved for future definition of creation flags).
Upon success a handle for the new BTI is returned. This handle will have rights ZX_RIGHT_READ, ZX_RIGHT_WRITE, ZX_RIGHT_MAP, ZX_RIGHT_INSPECT, ZX_RIGHT_DUPLICATE, and ZX_RIGHT_TRANSFER.
iommu must be of type ZX_OBJ_TYPE_IOMMU and have ZX_RIGHT_NONE.
zx_bti_create()
returns ZX_OK and a handle to the new BTI (via out) on success. In the event of failure, a negative error value is returned.
ZX_ERR_BAD_HANDLE iommu is not a valid handle.
ZX_ERR_WRONG_TYPE iommu is not an iommu handle.
ZX_ERR_ACCESS_DENIED iommu handle does not have sufficient privileges.
ZX_ERR_INVALID_ARGS bti_id is invalid on the given IOMMU, out is an invalid pointer, or options is non-zero.
ZX_ERR_NO_MEMORY Failure due to lack of memory. There is no good way for userspace to handle this (unlikely) error. In a future build this error will no longer occur.