高分辨率定時器(hrtimer
)以ktime_t
來定義時間, 精度可以達到納秒級別 ,ktime_t
定義如下:
typedef s64 ktime_t;
可以用ktime_set
來初始化一個ktime
對象,常用方法如下:
ktime_t t = ktime_set(secs, nsecs);
高分辨率hrtimer
結構體定義如下:
struct hrtimer {
struct timerqueue_node node;
ktime_t _softexpires;
enum hrtimer_restart (*function)(struct hrtimer *);
struct hrtimer_clock_base *base;
unsigned long state;
......
};
enum hrtimer_restart {
HRTIMER_NORESTART, /* Timer is not restarted */
HRTIMER_RESTART, /* Timer must be restarted */
};
struct hrtimer
結構體中最主要的成員就是回調函數function
,回調函數的返回值可以為HRTIMER_NORESTART
或HRTIMER_RESTART
。HRTIMER_NORESTART
代表不需要重啟定時器,HRTIMER_RESTART
代表需要重啟定時器。
最常用的接口如下:
hrtimer_init(struct hrtimer *timer, clockid_t clock_id , enum hrtimer_mode mode)
hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode)
hrtimer_forward_now(struct hrtimer *timer,ktime_t interval)
hrtimer_cancel(struct hrtimer *timer)
hrtimer_init
:初始化 struct hrtimer
結構對象。clockid_t
是時鐘的類型, 種類很多,常見的有四種:
CLOCK_REALTIME
:系統實時時間。CLOCK_MONOTONIC
:從系統啟動時開始計時,自系統開機以來的單調遞增時間CLOCK_PROCESS_CPUTIME_ID
:本進程到當前代碼系統CPU花費的時間,包含該進程下的所有線程。CLOCK_THREAD_CPUTIME_ID
:本線程到當前代碼系統CPU花費的時間。
mode
是時間的模式,可以是 HRTIMER_MODE_ABS
, 表示絕對時間, 也可以是 HRTIMER_MODE_REL,
表 示相對時間。hrtimer_start
:啟動定時器。tim
是設定的到期時間, mode
和hrtimer_init
中的mode
參數含義相同。hrtimer_forward_now
: 修改到期時間為從現在開始之后的 interval
時間。hrtimer_cancel
:取消定時器。
-
驅動
+關注
關注
12文章
1827瀏覽量
85183 -
Linux
+關注
關注
87文章
11232瀏覽量
208938 -
定時器
+關注
關注
23文章
3241瀏覽量
114493
發布評論請先 登錄
相關推薦
評論