高分辨率定时器(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文章
1840浏览量
85296 -
Linux
+关注
关注
87文章
11304浏览量
209532 -
定时器
+关注
关注
23文章
3248浏览量
114826
发布评论请先 登录
相关推荐
评论