zx_msi_create

摘要

透過訊息信號中斷 (MSI) 分配建立中斷物件。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_msi_create(zx_handle_t handle,
                          uint32_t options,
                          uint32_t msi_id,
                          zx_handle_t vmo,
                          size_t vmo_offset,
                          zx_handle_t* out_interrupt);

說明

zx_msi_create() 會在 zx_msi_allocate() 建立的 MSI 配置處理常式中,建立與指定 MSI 相對應的中斷物件。這個物件可以與各種中斷系統呼叫搭配使用,就像使用 zx_interrupt_create() 傳回的 Interrupt 物件的方式一樣。每個 msi_id 一次只能建立一個中斷物件,但同一個 vmovmo_offset 可用於透過同一個 MSI 分配物件建立的多個 MSI。這麼做可讓根資源的持有人從系統分配向量和 MSI,並建立與這些向量相對應的中斷物件,供裝置驅動程式使用。

vmo 應是指稱含有快取政策「*ZX_CACHE_POLICY_UNCACHED_DEVICE」的實體虛擬機器 (透過 *zx_vmo_create_physical() 建立)。如果是測試目的,請使用連續 *zx_vmo_create_contiguous() vmo。

msi_id 會對應特定的 MSI 分配配置中的向量,以便建立中斷物件。msi_id 必須介於 0 至分配大小減 1 (含) 之間。

vmo_offset 是指 MSI 能力結構開始處的 vmo 中的偏移值。您可在 PCI 本機匯流排規格 3.0 版 (第 6.8 節) 中找到此結構的詳細資料。

options 應為 0。

權限

handle 必須是 ZX_OBJ_TYPE_MSI 類型。

vmo 必須是 ZX_OBJ_TYPE_VMO 類型。

vmo 必須具備 ZX_RIGHT_MAP

傳回值

zx_msi_create() 會在成功時傳回 ZX_OK。如果失敗,系統會傳回負值錯誤值。

錯誤

ZX_ERR_BAD_HANDLE 帳號代碼無效。

ZX_ERR_WRONG_TYPE 處理常式並非適當類型。

ZX_ERR_INVALID_ARGS處理常式所參照的配置中,msi_id 並非有效的 MSI ID,vmo 並非 ZX_PAGE_SIZE,vmo 並非實體或連續,vmo 的快取政策並非設為 ZX_CACHE_POLICY_UNCACHED_DEVICE,

ZX_ERR_ALREADY_BOUNDmsi_id 對應的中斷物件*已存在。

另請參閱