zx_object_wait_one

摘要

等待物件上的信號。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_object_wait_one(zx_handle_t handle,
                               zx_signals_t signals,
                               zx_time_t deadline,
                               zx_signals_t* observed);

說明

zx_object_wait_one() 是封鎖的系統呼叫,會使呼叫端等待直到「期限」通過,或是「處理常式」所參照的至少一個信號 (由位元遮罩「信號」指定) 為止。如果物件已聲明至少一個指定的信號,等待時間會立即以 ZX_OK 結束。

傳回時,如果非 NULL,則 obrow 是物件上宣告的「所有」信號點陣圖。如果其中一個指定的信號已宣告,「觀察中」將是初次宣告指定信號時宣告的信號組合。否則,如果「期限」通過或「控制代碼」關閉,「觀測到」將包含 zx_object_wait_one 系統呼叫完成時的物件信號狀態。

deadline 參數會指定 ZX_CLOCK_MONOTONIC 的期限,並會根據工作的計時器封裝政策自動調整。

  • ZX_TIME_INFINITE 是一個特殊值,表示永久等待。
  • ZX_TIME_INFINITE_PAST (或 ZX_CLOCK_MONOTONIC 中目前時間之前的任何值) 會查詢信號目前的值。

權限

handle 必須具有 ZX_RIGHT_WAIT

傳回值

如果呼叫發生時在呼叫 期限,或在物件上觀察到任何信號zx_object_wait_one() 會傳回 ZX_OK

ZX_ERR_TIMED_OUT 事件中,「觀察到」可以反映在期限過後、系統傳回 syscall 之前發生的狀態變更。

ZX_ERR_CANCELED 事件中,控制代碼已關閉,而「Observed」將設定 ZX_SIGNAL_HANDLE_CLOSED 位元。

其他傳回值不會定義 Observed

錯誤

ZX_ERR_INVALID_ARGS「觀察到」是無效指標。

ZX_ERR_BAD_HANDLE 帳號代碼不是有效的帳號代碼。

ZX_ERR_ACCESS_DENIED「處理常式」沒有 ZX_RIGHT_WAIT,因此可能不會等待。

ZX_ERR_CANCELED 帳號代碼在等待期間失效 (例如已結束)。

ZX_ERR_TIMED_OUT 在「帳號代碼」上觀察到任何指定信號之前,超過指定期限。

ZX_ERR_NOT_SUPPORTED 處理常式是無法等待的控制代碼 (例如通訊埠控制代碼)。

附註

如要進一步瞭解信號及其術語,請參閱信號

另請參閱