zx_timer_set
名称
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信号。
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_HANDLE:handle是无效句柄。
ZX_ERR_ACCESS_DENIED:handle缺少ZX_RIGHT_WRITE权限。
ZX_ERR_OUT_OF_RANGE:slack是负值。