一、定时器的一些基本概念
1.1 定时器一般分为两大类:
软件定时器:由操作系统模拟的定时,没有真实存在的时钟源和计数器, 一般对时钟源和计数器硬件有一定的依赖,跨平台性较好。
硬件定时器:由真正存在的时钟源和计数器组成,跟硬件相关,跨平台的性能不好。
1.2 定时器一般由什么组成
一般的定时器都有两部分组成:
计数器和时钟源;
计数器:单纯的计数 如:RTC向上的计数器
时钟源:给计数提供一个节拍,说白了就是决定我们的计数器多久计数一次。比如说时钟源 100HZ
就表示我们的计数器一秒钟计数100次。
二、linux内核定时器
内核的定时器,指的就是Linux下的软件的定时,所有的软件定时器对硬件的定时器是有一定的依赖的,软件定时器也有硬件定时器的特性,软件定时器也有时钟源和计数器。
如果说我们使用linux3.5的内核里,时钟源默认的是 100HZ 每计数一次是10ms,在.config配置内核的编译配置的时候,改成了 200HZ --那么就是每5ms计数一次。
在linux内核里,计数器开始计数是从系统上电就开始的,并且只要我的系统不关闭,计数器就会一直计数,计数器从开机到现在所计的数在linux内核里有一个变量记录,这个变量的值是一直变化的,就类似与日历时间,这个变量就叫做jiffies,它的值是每隔5ms自加一次,假如我现在要定时5s去执行某一个动作,让计数器去计时5s,定时器计时五秒钟后,计数器应该计数的值:jiffies+5*HZ。
三、linux内核定时器相关的API
函数的功能:初始化一个内核的定时器
函数的头文件:<linux/timer.h>
函数的原型:void init_timer(struct timer_list *timer)