zx_iommu_create

摘要

在内核中创建新的 IOMMU 对象。

声明

#include <zircon/syscalls.h>

zx_status_t zx_iommu_create(zx_handle_t resource,
                            uint32_t type,
                            const void* desc,
                            size_t desc_size,
                            zx_handle_t* out);

说明

zx_iommu_create() 会在内核中创建一个新对象,表示 IOMMU 设备。

type 的值决定了 desc 的解释。请参阅下文,了解 type 值的详细信息。

成功后,系统将返回新 IOMMU 的句柄。此标识名将拥有权限 ZX_RIGHT_DUPLICATEZX_RIGHT_TRANSFER

类型 = ZX_IOMMU_TYPE_DUMMY

此类型表示无操作 IOMMU。不提供硬件级保护 以防范未经授权的内存访问它允许固定物理内存 防止重复使用某个网页,直到使用该网页的司机表明 一切。

desc 必须是指向 zx_iommu_desc_dummy_t 类型值的有效指针。 desc_size 必须是 sizeof(zx_iommu_desc_dummy_t)

权限

resource 必须具有资源种类 ZX_RSRC_KIND_SYSTEM 和资源库 ZX_RSRC_SYSTEM_IOMMU_BASE

返回值

zx_iommu_create() 会返回 ZX_OK 和新 IOMMU 的句柄 (通过 out)。如果失败,错误值为负值 。

错误

ZX_ERR_BAD_HANDLE resource 不是有效的句柄。

ZX_ERR_WRONG_TYPE resource 不是资源句柄。

ZX_ERR_ACCESS_DENIED 资源句柄没有足够的权限。

ZX_ERR_NOT_SUPPORTED 类型不是定义的值或不是 此系统所支持的 1000 度。

ZX_ERR_INVALID_ARGS“desc_size”desc_size大于 ZX_IOMMU_MAX_DESC_LENdesc 是无效的指针,out 是无效的指针,或者 desc 对于指定的 type 无效。

ZX_ERR_NO_MEMORY 因内存不足而失败。 用户空间没有好办法处理这种(不太可能)错误。 在将来的版本中,此错误不会再发生。

另请参阅