zx_break_create

摘要

建立中斷物件。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_interrupt_create(zx_handle_t src_obj,
                                uint32_t src_num,
                                uint32_t options,
                                zx_handle_t* out_handle);

說明

zx_interrupt_create() 會建立代表實體或虛擬中斷的中斷物件。

如果 optionsZX_INTERRUPT_VIRTUAL,系統會忽略 src_objsrc_num,並傳回虛擬中斷。

否則,src_obj 必須是建立平台中斷或 PCI 物件的適當資源,而 src_num 則是相關的中斷號碼。這項限制會將中斷的建立限制在 DDK (驅動程式庫開發套件) 的內部。驅動程式會透過各種 DDK API 取得實體中斷。

實體中斷會採用 ZX_INTERRUPT_EDGE_LOWZX_INTERRUPT_EDGE_HIGHZX_INTERRUPT_LEVEL_LOWZX_INTERRUPT_LEVEL_HIGHZX_INTERRUPT_REMAP_IRQ 的選項。

實體和虛擬中斷都會遵循 ZX_INTERRUPT_TIMESTAMP_MONO 選項。使用這個選項建立的中斷會傳回 zx_interrupt_wait() 的單調時間戳記,並假設傳遞至 zx_interrupt_trigger() 的時間戳記位於單調時間軸上。根據預設,這些時間戳記會在啟動時間表上運作。

句柄將包含 ZX_RIGHT_INSPECTZX_RIGHT_DUPLICATEZX_RIGHT_TRANSFER (可透過 zx_channel_write() 傳送至其他程序)、ZX_RIGHT_READZX_RIGHT_WRITE (適用於 zx_interrupt_ack())、ZX_RIGHT_WAIT (適用於 zx_interrupt_wait()) 和 ZX_RIGHT_SIGNAL (適用於 zx_interrupt_trigger())。

當底層實體中斷發生,或是在虛擬中斷上呼叫 zx_interrupt_trigger() 時,中斷就會「觸發」。當觸發中斷事件與 zx_interrupt_bind() 繫結至通訊埠時,就會將封包傳送至該通訊埠。

如果未繫結至連接埠,則可使用 zx_interrupt_wait() 等待中斷物件。

您無法使用 zx_object_wait_ 系列呼叫等待中斷。

權限

src_obj 必須具有資源類型 ZX_RSRC_KIND_IRQ

傳回值

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

錯誤

ZX_ERR_BAD_HANDLE src_obj 句柄無效 (如果這不是虛擬中斷)

ZX_ERR_WRONG_TYPE src_obj 句柄不是建立中斷的適當類型。

ZX_ERR_ACCESS_DENIED src_obj 句柄不允許這項作業。

ZX_ERR_INVALID_ARGS options 包含無效的標記,或是 out_handle 參數為無效的指標。

ZX_ERR_NO_MEMORY 記憶體不足導致失敗。使用者空間沒有適當的方式來處理這個 (不太可能發生的) 錯誤。日後的版本將不會再發生這個錯誤。

另請參閱