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() 是会导致调用方等待的阻塞系统调用 直到截止期限通过或 handle 引用的对象为止 断言至少一个由位掩码 signals 指定的信号。如果 该对象已在断言至少一个指定的 signals 中, 等待时间将立即结束,金额为 ZX_OK

返回时,如果为非 NULL 值,则观察到的将是所有信号的位图 对对象做出声明如果断言了指定的其中一个 signalsobused 是在指定事件发生时断言的一组信号 信号最初被断言。否则,如果 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 是一个不能等待的句柄 (例如端口句柄)。

备注

如需详细了解信号及其术语,请参阅信号

另请参阅