摘要
等待物件的信號。
宣告
#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 是一個無法等待的帳號代碼
(例如通訊埠控點)。
附註
如要進一步瞭解信號及相關術語,請參閱信號。