摘要
启动计时器。
声明
#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_MONOTONIC 或 ZX_CLOCK_BOOT 的截止时间,具体取决于如何使用 zx_timer_create() 创建句柄。如需等待相对时间间隔,请在 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
权限
句柄必须是 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 为负数。