zx_timer_set


英文原文快照


名称

timer_set —— 启动定时器

概要

  1. #include <zircon/syscalls.h>
  2. zx_status_t zx_timer_set(zx_handle_t handle, zx_time_t deadline,
  3. zx_duration_t slack);

描述

zx_timer_set() 的功能是启动在deadline到来时被触发的一次性定时器。如果先前对该定时器的zx_timer_set() 的调用还在等待被触发状态中,则取消先前的定时器,并根据需要取消发出ZX_TIMER_SIGNALED信号。

deadline参数指定了相对于ZX_CLOCK_MONOTONIC的截止日期。为了获取相对时间间隔,请使用zx_deadline_after() 的返回值传递给deadline

要立即触发计时器,请传递小于或等于0的值到deadline 当计时器被触发时,它发出ZX_TIMER_SIGNALED信号。如果需取消触发此信号,请调用timer_cancel() 或再次调用timer_set()

slack参数指定(deadline - slack, deadline + slack)的范围,在此期间允许定时器触发。系统使用此参数作为提示来合并附近的计时器。

精确的合并行为由创建计时器时指定的options参数所控制。ZX_TIMER_SLACK_EARLY仅允许定时器在(deadline - slack, deadline)的区间内被触发,而ZX_TIMER_SLACK_LATE仅允许在(deadline, deadline + slack)的区间内被触发。默认的options值0等同于ZX_TIMER_SLACK_CENTER,并允许较早和较晚被触发,即有效区间为(deadline - slack, deadline + slack)。

权限

handle需具有ZX_RIGHT_WRITE权限。

返回值

zx_timer_set() 调用成功则返回ZX_OK。如果调用失败,则返回负的错误码。

错误码

ZX_ERR_BAD_HANDLEhandle是无效句柄。

ZX_ERR_ACCESS_DENIEDhandle缺少ZX_RIGHT_WRITE权限。

ZX_ERR_OUT_OF_RANGEslack是负值。

另见

timer_createtimer_canceldeadline_after