摘要
创建一个计时器。
声明
#include <zircon/syscalls.h>
zx_status_t zx_timer_create(uint32_t options,
zx_clock_t clock_id,
zx_handle_t* out);
说明
zx_timer_create()
会创建一个计时器,该对象可以在达到指定时间点时发出信号。clock_id
可以是 ZX_CLOCK_MONOTONIC
或 ZX_CLOCK_BOOT
,具体取决于计时器应使用哪个时间轴作为其参考。请注意,在挂起到空闲期间,启动时间轴上的计时器会耗尽,但不会唤醒系统。
options 值指定了合并行为,该行为会控制系统能否提前或推迟触发时间,具体取决于其他待处理的计时器。
可能的值包括:
ZX_TIMER_SLACK_CENTER
ZX_TIMER_SLACK_EARLY
ZX_TIMER_SLACK_LATE
在选项中传递 0 等同于 ZX_TIMER_SLACK_CENTER
。
如需了解详情,请参阅计时器松弛时间。
返回的句柄具有 ZX_RIGHT_DUPLICATE
、ZX_RIGHT_TRANSFER
、ZX_RIGHT_WRITE
、ZX_RIGHT_SIGNAL
、ZX_RIGHT_WAIT
和 ZX_RIGHT_INSPECT
权限。
权限
调用方作业政策必须允许 ZX_POL_NEW_TIMER
。
返回值
zx_timer_create()
会在成功时返回 ZX_OK
。如果失败,则返回负错误值。
错误
ZX_ERR_INVALID_ARGS
out 是无效的指针或 NULL,或者 options 不是 ZX_TIMER_SLACK
值之一,或者 clock_id 是 ZX_CLOCK_MONOTONIC
以外的任何值。
ZX_ERR_NO_MEMORY
因内存不足而失败。用户空间没有很好的方式来处理这种(不太可能发生的)错误。在未来的 build 中,此错误将不再出现。