【linux驱动开发知识点汇总-定时器hrtimer】

本文详细介绍了Linux内核中的hrtimer模块,包括如何初始化、设置回调函数、启动定时器和取消定时。重点讲解了which_clock和mode参数的选择,以及如何与work队列配合使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

hrtimer为内核提供的高精度定时器,可以提供纳秒级的定时。

应用

1、初始化
  • 函数原型:
void hrtimer_init(struct hrtimer *timer, clockid_t which_clock,
			 enum hrtimer_mode mode);
  • 参数说明
    • which_clock
      • CLOCK_REALTIME---- 实时时间,若系统时间变了,定时器也跟着改变
      • CLOCK_MONOTONIC—递增时间,不受系统时间影响
      • CLOCK_BOOTTIME— 与 CLOCK_MONOTONIC 一样,是一个单调递增的时钟。 不同的是 CLOCK_BOOTTIME 时钟包括系统挂起的时间
    • mode
      • HRTIMER_MODE_REL —相对时间
      • HRTIMER_MODE_ABS —绝对时间
2、设置回调函数
timer.function = hr_callback;
  • 定时器超时后会调用回调函数。
  • 回调函数中的返回值来决定是否需要重新激活定时器
    • HRTIMER_NORESTART – 不需要重新激活
    • HRTIMER_RESTART, – 需要重新激活
3、定时器启动
int hrtimer_start(struct hrtimer *timer, ktime_t tim,
			 const enum hrtimer_mode mode);
  • 参数说明
    • tim 定时器超时时间
    • mode 时间类型<绝对时间或相对时间>
  • 定时器经常和work队列一起使用,通过队列来启动、停止定时器
4、定时器取消
int hrtimer_cancel(struct hrtimer *timer);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值