Linux内核中高精度定时器使用
- 内核中高精度定时器
在linux内核下编程,特别是驱动编程中,往往HZ的定时器精度不能满足我们的需求;此时,内核为高精度定时器重新设计了一套软件架构,它可以为我们提供纳秒级的定时精度,以满足对精确时间有迫切需求的应用程序或内核驱动,例如多媒体应用,音频设备的驱动程序等等。
timer_list内核定时器,它的精度在毫秒级别,内核提供纳秒级别的高精度定时器 hrtimer。源文件在linux/kernel/hrtimer.c中,接口简单。下面介绍一下相关接口:
1) 定时器定义与绑定超时回调函数
内核用一个hrtimer结构来表示一个高精度定时器:
struct hrtimer {
struct timerqueue_node node;
ktime_t _softexpires;
enum hrtimer_restart (*function)(