linux的时间概念:
Linux系统定时器是可编程的频率中断处理器,此频率为每秒的定时器节拍数,对应内核变量HZ
HZ是一个与体系结构相关的常数:
Linux为大多数平台提供HZ值范围为50-1200
x86 PC平台默认为1000,我们的内核为200
内核中有一个非常重要的全局变量:jiffies
它是一个无符号32位整数,用来记录自内核启动以来的时钟滴答总数(即每隔1/HZ秒加1)
时间延时:
在驱动编程中经常会用到一些延时的情况根据延迟时间的长短分为长延迟和短延迟
短延迟-不依赖于时钟滴答,与具体的CPU类型相关
#include <linux/delay.h>
void ndelay(unsigned long nsecs); //纳秒级延时
void udelay(unsigned long usecs); //微秒级延时
void mdelay(unsigned long msecs); //毫秒级延时
【注】:这三个延时函数使任务进入忙等待,一般不太长的时间可以用它
还有一种毫秒级延迟方法,此方法不涉及忙等待, 会导致进程睡眠,函数如下(其中带interruptible为 可提前唤醒)
void msleep(unsigned int millisecs);/*毫秒*/
unsigned long msleep_interruptible(
unsigned int millisecs);/*毫秒*/
void ssleep(unsigned int seconds);/*秒*/