摘要
创建计时器。
声明
#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_CENTERZX_TIMER_SLACK_EARLYZX_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 中,此错误将不再出现。