摘要
觸發虛擬中斷物件。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_interrupt_trigger(zx_handle_t handle,
uint32_t options,
zx_time_t timestamp);
說明
zx_interrupt_trigger() 用於觸發虛擬中斷物件,導致中斷訊息封包抵達繫結的通訊埠 (如果繫結至通訊埠),或 zx_interrupt_wait() 在等待此中斷時傳回。
options 必須為零。
timestamp 預設會解讀為 ZX_CLOCK_BOOT 的時間戳記。不過,如果中斷是使用 ZX_INTERRUPT_TIMESTAMP_MONO 選項建立,這個時間戳記就會解讀為 ZX_CLOCK_MONOTONIC 的時間戳記。
只有在基礎物件是使用 ZX_INTERRUPT_VIRTUAL 選項明確建立的虛擬中斷時,zx_interrupt_trigger() 才有效,且不得用於強制觸發實體中斷。
虛擬中斷也支援 Zircon 信號 ZX_VIRTUAL_INTERRUPT_UNTRIGGERED,可搭配標準 Zircon 信號等待機制 (not
zx_interrupt_wait()) 使用,通知觸發驅動程式庫程式中斷消費者已處理並確認中斷觸發事件。如要瞭解如何使用 ZX_VIRTUAL_INTERRUPT_UNTRIGGERED 信號,請參閱「(這裡)Interrupts#virtual-interrupts-and-the-untriggered-signal」。
權限
handle 必須是 ZX_OBJ_TYPE_INTERRUPT 類型,且具有 ZX_RIGHT_SIGNAL。
傳回值
zx_interrupt_trigger() 會在成功時傳回 ZX_OK。如果失敗,系統會傳回負數錯誤值。
錯誤
ZX_ERR_BAD_HANDLE handle 是無效的控制代碼。
ZX_ERR_WRONG_TYPE handle 不是中斷物件。
ZX_ERR_BAD_STATE handle 不是虛擬中斷。
ZX_ERR_CANCELED zx_interrupt_destroy() 在 handle 上遭到呼叫。
ZX_ERR_ACCESS_DENIED 帳號代碼缺少 ZX_RIGHT_SIGNAL。
ZX_ERR_INVALID_ARGS options 不為零。