摘要
等待中断。
声明
#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_ack() 一样。
您可以使用 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 句柄无效。
ZX_ERR_WRONG_TYPE 句柄不是中断对象的句柄。
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 参数是一个无效的指针。