摘要
啟動計時器。
宣告
#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()
會啟動一次性計時器,並在期限通過時觸發。如果之前對 zx_timer_set()
的呼叫正在等待,先前的計時器會取消,並視需要取消 ZX_TIMER_SIGNALED
。
「deadline」參數會指定 ZX_CLOCK_MONOTONIC
的期限。如要等待相對間隔,請使用「期限」中的 zx_deadline_after()
傳回值。
如要觸發計時器,請立即傳遞小於或等於 0
的期限。
計時器觸發時,會斷言 ZX_TIMER_SIGNALED
。如要再次宣告這個訊號,請再次呼叫 zx_timer_cancel()
或 zx_timer_set()
。
slack 參數指定範圍從 deadline - slack 到 deadline + slack,系統會使用這個參數做為抑制鄰近計時器的提示。
精確的聯合代管行為是由計時器建立時指定的 options 參數控制。ZX_TIMER_SLACK_EARLY
僅允許在「期限」-「slack」間隔「ZX_TIMER_SLACK_LATE
」中觸發,而 ZX_TIMER_SLACK_LATE
僅允許在「期限」+「slack」間隔中觸發。預設選項值為 ZX_TIMER_SLACK_CENTER
,允許提前和延遲觸發,有效間隔為「期限」-「slack」至「期限」+「slack」
權限
handle 必須是 ZX_OBJ_TYPE_TIMER
類型,且具有 ZX_RIGHT_WRITE
。
傳回值
zx_timer_set()
會在成功時傳回 ZX_OK
。如果失敗,系統會傳回負值錯誤值。
錯誤
ZX_ERR_BAD_HANDLE
帳號代碼不是有效的帳號代碼。
ZX_ERR_ACCESS_DENIED
處理常式缺少正確的 ZX_RIGHT_WRITE
。
ZX_ERR_OUT_OF_RANGE
slack 為負值。