总结
创建新的总线事务发起者。
声明
#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()
会创建一个新的总线事务发起者,并给定一个 IOMMU 的句柄以及该 IOMMU 下游设备的硬件事务标识符。
options 必须为 0(预留给创建标志的未来定义)。
成功后,将返回新 BTI 的句柄。此标识名将拥有以下权限:ZX_RIGHT_READ
、ZX_RIGHT_WRITE
、ZX_RIGHT_MAP
、ZX_RIGHT_INSPECT
、ZX_RIGHT_DUPLICATE
和 ZX_RIGHT_TRANSFER
。
权限
iommu 必须是 ZX_OBJ_TYPE_IOMMU
类型且具有 ZX_RIGHT_NONE
。
返回值
zx_bti_create()
会在成功时返回 ZX_OK
和新 BTI 的句柄(通过 out)。如果失败,则返回负的错误值。
错误
ZX_ERR_BAD_HANDLE
iommu 不是有效的句柄。
ZX_ERR_WRONG_TYPE
iommu 不是 Iommu 句柄。
ZX_ERR_ACCESS_DENIED
iommu 标识名没有足够的权限。
ZX_ERR_INVALID_ARGS
bti_id 在给定 IOMMU 上无效,out 是无效的指针,或者 options 为非零值。
ZX_ERR_NO_MEMORY
由于内存不足而失败。
用户空间没有什么方法来处理此(不太可能)错误。在以后的 build 中,此错误不会再发生。