总结
启动计时器。
声明
#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 - slack 到 deadline + slack,在此期间允许计时器触发。系统会使用此参数作为提示来合并附近的计时器。
精确的合并行为由创建计时器时指定的 options 参数控制。ZX_TIMER_SLACK_EARLY
仅允许在 deadline - slack 间隔内触发,ZX_TIMER_SLACK_LATE
仅允许在 deadline + slack 间隔内触发。默认选项值 0 为 ZX_TIMER_SLACK_CENTER
,它允许提前和延迟触发,有效时间间隔为 deadline - slack 到 deadline + 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 为负数。