摘要
等待中斷。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_interrupt_wait(zx_handle_t handle, zx_time_t* out_timestamp);
說明
zx_interrupt_wait() 是會造成呼叫端等待中斷觸發的封鎖系統呼叫。只能用於尚未透過 zx_interrupt_bind() 繫結至通訊埠的中斷物件。
如果執行緒收到通知,指出因從 zx_interrupt_wait() 的呼叫傳回而觸發中斷,則下一次呼叫 zx_interrupt_wait() 時,除了等待下一個觸發事件,也會確認中斷物件。請注意,如要確認非連接埠繫結的中斷物件,唯一方法是再次等待中斷物件。zx_interrupt_ack() 不會變更非通訊埠繫結中斷的狀態。如要瞭解如何在使用 zx_interrupt_wait() 時正確等待及確認中斷,請參閱「(這裡)Interrupts#synchronous-waiting-and-acknowledgement」。
您可以使用 zx_interrupt_destroy() 中止等待,或關閉中斷物件的最終控制代碼。
權限
handle 必須是 ZX_OBJ_TYPE_INTERRUPT 類型,且具有 ZX_RIGHT_WAIT。
傳回值
zx_interrupt_wait() 會在成功時傳回 ZX_OK,如果 out_timestamp 不是 NULL,則會傳回觸發中斷的時間戳記。根據預設,這個時間戳記是相對於 ZX_CLOCK_BOOT。不過,如果中斷是使用 ZX_INTERRUPT_TIMESTAMP_MONO 旗標建立,這個時間戳記會與 ZX_CLOCK_MONOTONIC 相關。
錯誤
ZX_ERR_BAD_HANDLE handle 是無效的控制代碼。
ZX_ERR_WRONG_TYPE handle 不是中斷物件的控制代碼。
ZX_ERR_BAD_STATE 中斷物件繫結至通訊埠。
ZX_ERR_ACCESS_DENIED 帳號代碼缺少 ZX_RIGHT_WAIT。
ZX_ERR_CANCELED 等待期間關閉 handle,或在其上呼叫 zx_interrupt_destroy()。
ZX_ERR_INVALID_ARGS out_timestamp 參數是無效指標。