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() 会启动一次性计时器,该计时器会在截止日期过后触发。如果之前对 zx_timer_set() 的调用处于待处理状态,则系统会取消之前的计时器,并根据需要取消断言 ZX_TIMER_SIGNALED

deadline 参数指定相对于 ZX_CLOCK_MONOTONIC 的截止期限。如需等待相对间隔,请在 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

权限

handle 必须为 ZX_OBJ_TYPE_TIMER 类型,且具有 ZX_RIGHT_WRITE

返回值

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

错误

ZX_ERR_BAD_HANDLE 句柄不是有效的句柄。

ZX_ERR_ACCESS_DENIED 句柄缺少正确的 ZX_RIGHT_WRITE

ZX_ERR_OUT_OF_RANGE slack 为负数。

另请参阅