摘要
在核心中建立新的 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_DUPLICATE
》和《ZX_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
(透過) 成功的故事。失敗時,錯誤的值為負值
。
錯誤
「ZX_ERR_BAD_HANDLE
」資源不是有效的帳號代碼。
ZX_ERR_WRONG_TYPE
的「resource」並非資源控制代碼。
ZX_ERR_ACCESS_DENIED
資源帳號代碼權限不足。
ZX_ERR_NOT_SUPPORTED
type 不是定義的值或尚未定義
支援系統。
ZX_ERR_INVALID_ARGS
desc_size 大於 ZX_IOMMU_MAX_DESC_LEN
,
「desc」是無效指標,「out」是無效指標,或
對指定的類型而言,「desc」是無效的。
ZX_ERR_NO_MEMORY
因記憶體不足而失敗。
使用者空間無法妥善處理這種 (異常) 錯誤。
在日後的版本中不會再發生這個錯誤。