jiffies:内核中的时间观念
jiffies在內核中是一個全局變量,聲明包含在#include <linux/jiffies.h>中,
幾個內核中常用的的概念:
1. HZ
內核常量,ARM架構HZ=100,X86架構HZ=1000
例如HZ=100,表示硬件定時器1秒鐘給CPU發送100個定時器中斷信號
每發生一次中斷的時間間隔為10ms
注意:不同的環境HZ的值都是可能不一樣的,我曾經遇到過一個TI的開發板,他的jiffies比較特殊一點,HZ = 128表示1秒,所以大家使用的時候,一定要確認好HZ的值
2. jiffies_64, jiffies
?jiffies_64是內核全局變量,64位,unsigned long long,
記錄自開機以來發生了多少次的定時器中斷,每發生一次,"自動"加1?
jiffies也是內核全局變量,32位,unsigned long,值取得jiffies_64 的低32位,每發生一次定時器中斷,同樣"自動"加1,一般用來記錄流失時間(時間間隔)
注意:只要在內核代碼中看到jiffies,就等于此刻為當前時間
由于在內核中經常使用的jiffies,下邊給出一個小例子(本代碼只是一個使用jiffies的框架,具體使用,只需做稍微的修改) ? ? ?
?參考代碼:
unsigned long timeout = jiffies + 5*HZ;
說明:
?jiffies:表示當前時間
5*HZ:時間間隔為5秒
timeout:表示5秒以后的時間,也就是超時時間
?參考代碼:判斷是否超時
?unsigned long timeout = jiffies + 5*HZ;
? ? ? ...
? ? ? ...
?... //若干條代碼,代碼執行需要時間
if (jiffies > timeout)
超時
else
? ? ? ? 沒有超時
? ? ?
?解決方法:
if(time_after(jiffies, timeout)) {
? ? ? 超時
? ? ? } else {
? ? ? 沒有超時
? ? ? }//此函數不需要死機,只需要用sourceinsignt查看內核大神們怎么使用即可,里面很多都是經典的用法
總結
以上是生活随笔為你收集整理的jiffies:内核中的时间观念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2013.05.09
- 下一篇: vue img标签无图片显示默认图片效果