zx_timer_set

摘要

启动计时器。

声明

#include <zircon/syscalls.h>

zx_status_t zx_timer_set(zx_handle_t handle,
                         zx_time_t deadline,
                         zx_duration_t slack);

说明

zx_timer_set() 会启动一个单次触发的计时器,该计时器会在 deadline 过去后触发。如果之前对 zx_timer_set() 的调用处于待处理状态,则会取消之前的计时器,并根据需要取消断言 ZX_TIMER_SIGNALED

截止时间参数指定了相对于 ZX_CLOCK_MONOTONICZX_CLOCK_BOOT 的截止时间,具体取决于如何使用 zx_timer_create() 创建句柄。如需等待相对时间间隔,请在 deadline 中使用 zx_deadline_after() 返回值。

如需立即触发计时器,请传递小于或等于 0截止时间

当计时器触发时,它会断言 ZX_TIMER_SIGNALED。如需取消断言此信号,请再次调用 zx_timer_cancel()zx_timer_set()

slack 参数指定了一个范围,从 deadline - slackdeadline + slack,在此范围内允许触发计时器。系统会使用此参数作为提示来合并附近的计时器。

精确的合并行为由创建计时器时指定的 options 参数控制。ZX_TIMER_SLACK_EARLY 仅允许在 deadline - slack 区间内触发,而 ZX_TIMER_SLACK_LATE 仅允许在 deadline + slack 区间内触发。默认选项值 0 为 ZX_TIMER_SLACK_CENTER,允许提前触发和延迟触发,有效间隔为 deadline - slackdeadline + slack

权限

句柄必须是 ZX_OBJ_TYPE_TIMER 类型,并且具有 ZX_RIGHT_WRITE

返回值

如果成功,zx_timer_set() 会返回 ZX_OK。如果失败,则返回负错误值。

错误

ZX_ERR_BAD_HANDLE handle 不是有效的 handle。

ZX_ERR_ACCESS_DENIED 句柄缺少正确的 ZX_RIGHT_WRITE

ZX_ERR_OUT_OF_RANGE slack 为负数。

另请参阅