中断时间等待

摘要

等待中断。

声明

#include <zircon/syscalls.h>

zx_status_t zx_interrupt_wait(zx_handle_t handle, zx_time_t* out_timestamp);

说明

zx_interrupt_wait() 是一个阻塞型系统调用,会导致调用方等待中断触发。 它只能用于尚未通过 zx_interrupt_bind() 绑定 到端口的中断对象。

如果线程通过从对 zx_interrupt_wait() 的调用返回而收到中断触发的通知,则除了等待下一个触发事件之外,对 zx_interrupt_wait() 的下一次调用也会确认中断对象。请注意,再次等待中断对象是确认非端口绑定中断对象的 唯一 方法。zx_interrupt_ack() 不会更改非端口绑定中断的状态。 如需详细了解在使用 zx_interrupt_wait() 时如何正确等待和确认中断,请参阅(此处)Interrupts#synchronous-waiting-and-acknowledgement

可以使用 zx_interrupt_destroy() 或通过关闭中断对象的最终句柄来 中止等待。

权限

handle 的类型必须为 ZX_OBJ_TYPE_INTERRUPT,并且必须具有 ZX_RIGHT_WAIT

返回值

zx_interrupt_wait() 成功时返回 ZX_OK,并且如果 out_timestamp 不为 null,则返回中断触发时的时间戳。默认情况下,此时间戳相对于 ZX_CLOCK_BOOT。不过,如果中断是使用 ZX_INTERRUPT_TIMESTAMP_MONO 标志创建的,则此时间戳将相对于 ZX_CLOCK_MONOTONIC

错误

ZX_ERR_BAD_HANDLE handle 是无效句柄。

ZX_ERR_WRONG_TYPE handle 不是中断对象的句柄。

ZX_ERR_BAD_STATE 中断对象已绑定到端口。

ZX_ERR_ACCESS_DENIED handle 缺少 ZX_RIGHT_WAIT

ZX_ERR_CANCELED handle 在等待时关闭,或者对其调用了 zx_interrupt_destroy()

ZX_ERR_INVALID_ARGS out_timestamp 参数是无效指针。

另请参阅