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 結束。

傳回時,如果非空值,則「觀察到」是「所有」信號的點陣圖 以免對物件聲明擁有權。如果已聲明其中一個指定的信號, 「觀察到」指的是指定當下宣告的信號組合 則在未經處理的情況下,否則,如果期限帳號代碼 已結案,觀察到 會包含物件當時的信號狀態 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 的情況下,「觀察到」可能會反映狀態變更 發生時間,但是在系統呼叫傳回之前。

發生 ZX_ERR_CANCELED 事件時,帳號代碼已關閉, 且「觀察」的權重會設定成 ZX_SIGNAL_HANDLE_CLOSED 位元。

其他回傳值不會定義「觀察到」

錯誤

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 handle 是一個無法等待的帳號代碼 (例如通訊埠控點)。

附註

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

另請參閱