首页 理论教育 在Linux下学习时间概念《Linux驱动程序开发实例》

在Linux下学习时间概念《Linux驱动程序开发实例》

时间:2023-10-19 理论教育 版权反馈
【摘要】:下面介绍几个Linux下的时间概念。Linux用宏CLOCK_TICK_RATE来表示计时器的输入时钟脉冲的频率。Linux内核用宏HZ来表示时钟滴答的频率,而且在不同的平台上HZ有不同的定义值,而HZ通常表示1s的时间。每发生一次时钟滴答,内核的时钟中断处理函数timer_interrupt会将该全局变量jiffies加1。extern unsigned long volatile jiffies;xtime:timeval结构全局变量,记载系统自开机以来的当前时间,精确度为纳秒,基准时间是1970年1月1日零点。系统时间可以根据RTC时间来进行同步。

在Linux下学习时间概念《Linux驱动程序开发实例》

下面介绍几个Linux下的时间概念。

(1)时钟周期(clock cycle):晶体振荡器在1s内产生的时钟脉冲个数就是时钟周期的频率。Linux用宏CLOCK_TICK_RATE来表示计时器的输入时钟脉冲的频率。

(2)时钟滴答(clock tick):一次时钟中断即产生一次时钟滴答。系统每个时钟周期产生一次时钟中断。

(3)时钟滴答的频率:1s内的时钟滴答次数。Linux内核用宏HZ来表示时钟滴答的频率,而且在不同的平台上HZ有不同的定义值,而HZ通常表示1s的时间。

(4)全局变量(jiffies):这是一个32位的无符号整数,用来表示自内核上一次启动以来的时钟滴答次数。每发生一次时钟滴答,内核的时钟中断处理函数timer_interrupt会将该全局变量jiffies加1。

extern unsigned long volatile jiffies;

(5)xtime:timeval结构全局变量,记载系统自开机以来的当前时间,精确度为纳秒,基准时间是1970年1月1日零点

(6)系统时钟:也叫软件时钟,是由软件根据时间中断来计时的。系统时钟在系统关机的情况下是不存在的,当操作系统启动的时候,默认系统时间一般为1970年1月1日零点。系统时间可以根据RTC时间来进行同步。

在内核中可以使用下面的函数获取或设置系统时间:(www.xing528.com)

void do_gettimeofday(struct timeval*tv);//获取系统时间

int do_settimeofday(struct timespec*tv);//设置系统

Linux中用来描述时间的结构是timeval和timespec:

上面的结构和jiffies之间可以通过下列函数互相转换:

unsigned long timespec_to_jiffies(struct timespec*value);

void jiffies_to_timespec(unsigned long jiffies,struct timespec*value);

unsigned long timeval_to_jiffies(struct timeval*value);

void jiffies_to_timeval(unsigned long jiffies,struct timeval*value);

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈