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