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權限。

type = ZX_IOMMU_TYPE_STUB

這個型別代表無作業的 IOMMU。無法提供硬體層級的防護,防止未經授權存取記憶體。但允許釘選實體記憶體頁面,防止重複使用頁面,直到使用該頁面的驅動程式庫表示已完成作業為止。

desc 必須是 zx_iommu_desc_stub_t 型別值的有效指標。desc_size 必須為 sizeof(zx_iommu_desc_stub_t)

權限

resource 必須具有資源種類 ZX_RSRC_KIND_SYSTEM 和資源基礎 ZX_RSRC_SYSTEM_IOMMU_BASE

傳回值

成功時,zx_iommu_create() 會傳回 ZX_OK,以及新 IOMMU 的控制代碼 (透過 out)。如果失敗,系統會傳回負數錯誤值。

錯誤

ZX_ERR_BAD_HANDLE資源不是有效的控制代碼。

ZX_ERR_WRONG_TYPE resource 不是資源控制代碼。

ZX_ERR_ACCESS_DENIED resource 控制代碼的權限不足。

ZX_ERR_NOT_SUPPORTEDtype 不是已定義的值,或這個系統不支援該值。

ZX_ERR_INVALID_ARGS desc_size 大於 ZX_IOMMU_MAX_DESC_LENdesc 是無效指標、out 是無效指標,或 desc 的內容不適用於指定的 type

ZX_ERR_NO_MEMORY 記憶體不足,導致失敗。 使用者空間無法妥善處理這個 (不太可能發生的) 錯誤。 日後建構版本將不會再發生這個錯誤。

另請參閱