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)

權限

資源必須具備資源類型 ZX_RSRC_KIND_SYSTEM 和資源基礎 ZX_RSRC_SYSTEM_IOMMU_BASE

傳回值

zx_iommu_create() 會在成功後回傳 ZX_OK 和新 IOMMU (透過輸出) 的控制代碼。如果失敗,系統會傳回負值的錯誤值。

錯誤

ZX_ERR_BAD_HANDLE 資源並非有效的帳號代碼。

ZX_ERR_WRONG_TYPE 資源並非資源控制代碼。

ZX_ERR_ACCESS_DENIED 資源控制代碼沒有足夠權限。

ZX_ERR_NOT_SUPPORTED type 不是定義的值,或不受這個系統支援。

ZX_ERR_INVALID_ARGS desc_size 大於 ZX_IOMMU_MAX_DESC_LENdesc 是無效的指標、out 是無效的指標,或者 desc 的內容對指定的類型無效。

ZX_ERR_NO_MEMORY 由於記憶體不足而失敗。使用者空間無法妥善處理這項 (不太可能) 錯誤。日後的建構作業就不會再發生這個錯誤。

另請參閱