摘要
啟動計時器。
宣告
#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_CLOCK_BOOT 相關的期限,具體取決於如何使用 zx_timer_create() 建立控制代碼。如要等待相對間隔,請在 deadline 中使用 zx_deadline_after() 傳回的值。
如要立即觸發計時器,請傳遞小於或等於 0 的 deadline。
計時器觸發時,會判斷 ZX_TIMER_SIGNALED。如要取消聲明,請再次呼叫 zx_timer_cancel() 或 zx_timer_set()。
slack 參數會指定一個範圍,從 deadline - slack 到 deadline + slack,計時器可以在這個範圍內觸發。系統會使用這個參數做為提示,合併附近的計時器。
確切的合併行為是由建立計時器時指定的 options 參數控制。ZX_TIMER_SLACK_EARLY 只允許在「截止時間」-「寬限時間」間隔內觸發,ZX_TIMER_SLACK_LATE 則只允許在「截止時間」+「寬限時間」間隔內觸發。預設選項值為 0,即 ZX_TIMER_SLACK_CENTER,允許提早和延遲觸發,有效間隔為 deadline - slack 到 deadline + slack
權限
handle 必須是 ZX_OBJ_TYPE_TIMER 類型,且具有 ZX_RIGHT_WRITE。
傳回值
成功時,zx_timer_set() 會傳回 ZX_OK。
如果失敗,系統會傳回負數錯誤值。
錯誤
ZX_ERR_BAD_HANDLE handle 不是有效的控制代碼。
ZX_ERR_ACCESS_DENIED 控點缺少正確的 ZX_RIGHT_WRITE。
ZX_ERR_OUT_OF_RANGE slack 為負值。