摘要
等待对象的信号。
声明
#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()
是会导致调用方等待的阻塞系统调用
直到截止期限通过或 handle 引用的对象为止
断言至少一个由位掩码 signals 指定的信号。如果
该对象已在断言至少一个指定的 signals 中,
等待时间将立即结束,金额为 ZX_OK
。
返回时,如果为非 NULL 值,则观察到的将是所有信号的位图
对对象做出声明如果断言了指定的其中一个 signals,
obused 是在指定事件发生时断言的一组信号
信号最初被断言。否则,如果 deadline 过去或 handle
闭合,观察对象将包含对象信号当时的状态
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
,则 handle 已关闭,
和 observ 将设置 ZX_SIGNAL_HANDLE_CLOSED
位。
对于任何其他返回值,observ 为未定义状态。
错误
观察到的 ZX_ERR_INVALID_ARGS
是无效的指针。
ZX_ERR_BAD_HANDLE
handle 不是有效的句柄。
ZX_ERR_ACCESS_DENIED
标识名没有 ZX_RIGHT_WAIT
,可能
ZX_ERR_CANCELED
handle 在等待期间已失效(例如,已关闭)。
ZX_ERR_TIMED_OUT
:指定的截止时间早于指定的截止时间的
可以在 handle 上观察 signals。
ZX_ERR_NOT_SUPPORTED
handle 是一个不能等待的句柄
(例如端口句柄)。
备注
如需详细了解信号及其术语,请参阅信号。