內(nèi)核延時函數(shù)接口
延時的函數(shù)有delay
和sleep
兩種類型:
delay接口
void ndelay(unsigned long nsecs);//納秒延時
void udelay(unsigned long usecs);//微妙延時
void mdelay(unsigned long msecs);//毫秒延時
sleep接口
void msleep(unsigned int msecs);//毫秒級延時
long msleep_interruptible(unsigned int msecs);//毫秒級延時,可被信號打斷
void ssleep(unsigned int seconds);//秒級延時
delay和sleep的區(qū)別
delay
型延時:忙等待,占用CPU資源,延遲過程無法進行其他任務(wù)。
sleep
型延時:休眠,不占用CPU資源,其它模塊此時可以使用CPU資源。
低分辨率定時器
jiffies和HZ
jiffies
:全局變量,表示 系統(tǒng)啟動以來產(chǎn)生的節(jié)拍數(shù) 。每產(chǎn)生一次中斷,jiffies
自動加一。
HZ
:赫茲,也叫 節(jié)拍率 ,表示 每秒種產(chǎn)生多少次中斷 。
例如:HZ
為200
,代表每秒產(chǎn)生200
次中斷,那2
秒鐘jiffies
的值就應(yīng)該是400
。因此系統(tǒng)的運行時間可以用jiffies/HZ表示。
一秒鐘:jiffies
+ HZ
表示一秒鐘
原因:內(nèi)核中統(tǒng)計時間是通過jiffies,因此要比較時間或者定時也是通過jiffies。
例如程序運行一秒鐘,內(nèi)核如何知道運行了一秒?答案是運行一秒后的jiffies值和運行前的jiffies值進行比較,如果相差為一個HZ,則代表一秒鐘。jiffies+HZ其實就是一秒后jiffies的值,所以jiffies+HZ可以間接表示一秒鐘。
定時2秒:jiffies
+ 2*HZ
。以此類推
獲取當前的jiffies
值,可以用get_jiffies_64()
函數(shù)。
將時間轉(zhuǎn)為對應(yīng)的jiffies
值,可以用msecs_to_jiffies()
等函數(shù),例如msecs_to_jiffies(1000)
代表1秒,函數(shù)返回值其實就是HZ
。
相關(guān)接口
#include< linux/timer.h >
struct timer_list {
struct list_head list;
unsigned long expires; //定時器到期時間,傳入的是jiffies值
unsigned long data; //作為參數(shù)被傳入定時器處理函數(shù)
void (*function)(unsigned long);
};
void init_timer(struct timer_list * timer);//初始化定時器
void add_timer(struct timer_list * timer);//添加一個定時器
int mod_timer(struct timer_list *timer, unsigned long expires);//修改定時器的定時時間expires
int del_timer(struct timer_list * timer);//刪除定時器
unsigned int jiffies_to_msecs (const unsigned long j);//將jiffies轉(zhuǎn)為對應(yīng)的毫秒值
unsigned int jiffies_to_usecs (const unsigned long j);//將jiffies轉(zhuǎn)為對應(yīng)的微秒值
unsigned long msecs_to_jiffies (const unsigned int m);//將毫秒值轉(zhuǎn)為對應(yīng)的jiffies
unsigned long usecs_to_jiffies (const unsigned int u);//將微秒值轉(zhuǎn)為對應(yīng)的jiffies
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1378瀏覽量
40342 -
接口
+關(guān)注
關(guān)注
33文章
8668瀏覽量
151526 -
Linux
+關(guān)注
關(guān)注
87文章
11327瀏覽量
209965 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4343瀏覽量
62806
發(fā)布評論請先 登錄
相關(guān)推薦
評論