linux时间管理 之 jiffies
1、jiffies
又称时钟滴答,是一个全局变量,它的值在系统引导的时候初始化为0,在时钟中断初始化完成后,每次时钟中断发生,在时钟中断处理例程中都会将jiffies的值 +1。
jiffies_64:为了解决jiffies溢出问题,更重要的是通过jiffies_64可以知道自开机以来的时间间隔。
2、HZ
HZ表示时钟中断发生的频率。可以在.config的配置文件中改写。1/HZ是每个jiffies+1的时间间隔。
3、通过jiffies可以进行时间的比较和时间转换
4、时间比较
32位 64位
time_after(a,b) time_after64(a,b)
time_before(a,b) time_before64(a,b)
time_after_eq(a,b) time_after_eq64(a,b)
time_before_eq(a,b) time_before_eq64
time_in_range(a,b,c) time_in_range(a,b,c)
5、时间转换
a、jiffies和msecs以及usecs的转换:
unsigned int jiffies_to_msecs(const unsigned long);
unsigned int jiffies_to_usecs(const unsigned long);
unsigned long msecs_to_jiffies(const unsigned int m);
unsigned long usecs_to_jiffies(const unsigned int u);
b、jiffies和timespec以及timeval的转换
在用户空间,应用程序更多的使用秒以及毫秒等时间形式,而在内核中多使用jiffes。
内核定义了struct timeval 和 struct timespec 两种数据结构
struct timespec {
__kernel_time_t tv_sec;
long tv_nsec;
}
struct timeval {
__kernel_time_t tv_sec;
__kernel_suseconds_t tv_usec;
}
相互转换函数:
unsigned long timespec_to_jiffies(const struct timespec *value);
void jiffies_to_timespec(const unsigned long jiffies, struct timespec *value);
unsigned long timeval_to_jiffies(const struct timeval *value);
void jiffies_to_timeval(const unsigned long jiffies, struct timeval *value);
6、要注意的是jiffies的精度问题。如果HZ = 1000,则jiffies增加1代表1ms。
如果要用到更高精度的始终,要用其他的硬件机制。
原文链接: http://blog.csdn.net/lin2jian4liang4/article/details/49383761
linux时间管理 之 jiffies的更多相关文章
- Linux时间管理涉及数据结构和传统低分辨率时钟的实现
上篇文章大致描述了Linux时间管理的基本情况,看了一些大牛们的博客感觉自己写的内容很匮乏,但是没办法,只能通过这种方式提升自己……闲话不说,本节介绍下时间管理下重要的数据结构 设备相关数据结构 // ...
- linux 时间管理——概念、注意点(一)【转】
转自:http://www.cnblogs.com/openix/p/3324243.html 参考:1.http://bbs.eyeler.com/thread-69-1-1.html ...
- linux时间管理
/etc/sysconfig/clock 该配置文件可用来设置用户选择何种方式显示时间.如果硬件时钟为本地时间,则UTC设为0,并且不用设置环境变量TZ.如果硬件时钟为UTC时间,则要 ...
- Linux内核——定时器和时间管理
定时器和时间管理 系统定时器是一种可编程硬件芯片.它能以固定频率产生中断.该中断就是所谓的定时器中断.它所相应的中断处理程序负责更新系统时间,还负责执行须要周期性执行的任务. 系统定时器和时钟中断处理 ...
- Linux时间子系统之八:动态时钟框架(CONFIG_NO_HZ、tickless)
在前面章节的讨论中,我们一直基于一个假设:Linux中的时钟事件都是由一个周期时钟提供,不管系统中的clock_event_device是工作于周期触发模式,还是工作于单触发模式,也不管定时器系统是工 ...
- Linux时间子系统之八:动态时钟框架(CONFIG_NO_HZ、tickless)【转】
转自:http://blog.csdn.net/droidphone/article/details/8112948 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 数据结 ...
- linux设备驱动归纳总结(七):1.时间管理与内核延时【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-100005.html linux设备驱动归纳总结(七):1.时间管理与内核延时 xxxxxxxxxxx ...
- 《Linux内核设计与实现》读书笔记(十一)- 定时器和时间管理【转】
转自:http://www.cnblogs.com/wang_yb/archive/2013/05/10/3070373.html 系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务 ...
- Linux内核入门到放弃-时间管理-《深入Linux内核架构》笔记
低分辨率定时器的实现 定时器激活与进程统计 IA-32将timer_interrupt注册为中断处理程序,而AMD64使用的是timer_event_interrupt.这两个函数都通过调用所谓的全局 ...
随机推荐
- django基础2: 路由配置系统,URLconf的正则字符串参数,命名空间模式,View(视图),Request对象,Response对象,JsonResponse对象,Template模板系统
Django基础二 request request这个参数1. 封装了所有跟请求相关的数据,是一个对象 2. 目前我们学过1. request.method GET,POST ...2. reques ...
- [MongoDB] 学习笔记(2)
1. Mac 安装mongodb: 官网下载mac版mongodb,解压到本地目录,如/Applications/mongodb,注意这里的地址是根更目录下的Applications,然后在根目录下创 ...
- java基础知识框图
- $python数据分析基础——初识matplotlib库
基本用法 import numpy as np import matplotlib.pyplot as plt # 年份 year = [1950,1970,1990,2010] # 全球总人口(单位 ...
- qt打包问题。启动失败:Application failed to start because platform plugin “windows” is missing
qt打包启动失败:Application failed to start because platform plugin “windows” is missing 通常的原因是因为没有platform ...
- setState详解
我们都知道,React通过this.state来访问state,通过this.setState()方法来更新state.当this.setState()方法被调用的时候,React会重新调用rende ...
- eclipse部署的web项目没有添加到Tomcat的webapps目录下解决方法
eclipse没有像myeclipse那样,添加web项目时会自动部署到Tomcat的webapps目录下. 而是部署到了eclipse的.metadata\.plugins\org.eclipse. ...
- JavaWeb -- Struts 数据传输:OGNL和类型转换
1. 数据传输:OGNL和类型转换 OGNL和struts2 OGNL:Object-Graph Navigation Language. OGNL是集成进struts框架中比较强大的技术有助于数据传 ...
- Python基础笔记系列二:分支和循环
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 分支:即是if-else和if-elif-else语句 循环:即是whil ...
- php源码之appveyor
打开appveyor目录 是4个bat文件 1. .bat是什么? bat文件是dos下的批处理文件.批处理文件是无格式的文本文件,它包含一条或多条命令. 它的文件扩展名为.bat或.cmd 在命令提 ...