全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

Linux驱动高精度定时器hrtimer

时间:2023-10-04 15:32

人气:

作者:admin

标签: 定时器  驱动  Linux 

导读:高分辨率定时器( hrtimer )以 ktime_t 来定义时间, 精度可以达到纳秒级别 , ktime_t 定义如下: typedef s64 ktime_t ; 可以用 ktime_set 来初始化一个 ktime 对象,常用方法如下: ktime_t t = ktime...

高分辨率定时器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_NORESTARTHRTIMER_RESTARTHRTIMER_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 是设定的到期时间, modehrtimer_init中的mode参数含义相同。hrtimer_forward_now: 修改到期时间为从现在开始之后的 interval 时间。hrtimer_cancel:取消定时器。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信