簡單談?wù)凩inux內(nèi)核定時器

軟件意義上的定時器最終依賴硬件定時器來實現(xiàn), 內(nèi)核在時鐘中斷發(fā)生后檢測各定時器是否到期 , 到期后的定時器處理函數(shù)將作為軟中斷在底半部執(zhí)行 。實質(zhì)上,時鐘中斷處理程序會 換起TIMER_SOFTIRQ軟中斷 ,運行當前處理器上到期的所有定時器。

金昌網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),金昌網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為金昌成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的金昌做網(wǎng)站的公司定做!

總結(jié)起來還是軟中斷的流程

a.注冊軟中斷處理函數(shù)

/*/linux/kernel.timer.c*/
void __init init_timers(void)
  -->open_softirq(TIMER_SOFTIRQ, run_timer_softirq, NULL);

b.添加timer_list到某個鏈表

void add_timer (struct timer_list *timer);

c.觸發(fā)軟中斷處理函數(shù)

void irq_exit(void)
  -->tick_nohz_stop_sched_tick();
    -->raise_softirq_irqoff(TIMER_SOFTIRQ);

d.調(diào)用軟中斷處理函數(shù)

static void run_timer_softirq(struct softirq_action *h)
    -->__run_timers(base);
        -->遍歷執(zhí)行時間到達的timer_list中的定時器處理函數(shù)
在Linux設(shè)備驅(qū)動編程中,可以利用Linux內(nèi)核中提供的一組函數(shù)和數(shù)據(jù)結(jié)構(gòu)來完成定時觸發(fā)工作或者完成某種周期性的事務(wù)。這組函數(shù)和數(shù)據(jù)結(jié)構(gòu)使得驅(qū)動程序師在多數(shù)情況下不用關(guān)心具體的軟件定時器究竟對應(yīng)著怎樣的內(nèi)核和硬件行為。

1) 一個timer_list 結(jié)構(gòu)體的實例對應(yīng)一個定時器,其定義如下:

struct timer_list {

   struct list_head entry, /*定時器列表*/
   unsigned long expires, /*定時器到期時間*/
   void (*function) (unsigned long), /*定時器處理函數(shù)*/
   unsigned long data,/*作為參數(shù)被傳入定時器處理函數(shù)*/
   struct timer_base_s *base,
   ...

};

實例化 struct timer_list my_timer;

2) 初始化定時器

void init_timer (struct timer_list *timer);

TIMER_INITIALIZER (_function, _expires, _data)

DEFINE_TIMER (_name, _function, _expires, _data)

setup_timer ();

3) 增加定時器

void add_timer (struct timer_list *timer);

4) 刪除定時器

int del_timer (struct timer_list *timer);

5) 修改定時器的expire

int mod_timer (struct timer_list *timer, unsigned long expires);

分享標題:簡單談?wù)凩inux內(nèi)核定時器
文章出自:http://m.kartarina.com/article22/jedejc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)網(wǎng)站導(dǎo)航手機網(wǎng)站建設(shè)網(wǎng)站改版移動網(wǎng)站建設(shè)靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
主站蜘蛛池模板: 在线播放无码后入内射少妇| 亚洲精品中文字幕无码AV| 国产成人无码av在线播放不卡 | 亚洲人成影院在线无码观看| 免费无码又爽又刺激网站| 久久午夜无码鲁丝片秋霞| 极品粉嫩嫩模大尺度无码视频| 亚洲A∨无码一区二区三区| 亚洲av成本人无码网站| 亚洲AV无码专区电影在线观看| 狠狠精品干练久久久无码中文字幕 | 日韩乱码人妻无码中文字幕| 免费无码不卡视频在线观看| 亚洲av无码一区二区三区乱子伦| 亚洲熟妇无码爱v在线观看| AV无码精品一区二区三区宅噜噜| 亚洲GV天堂GV无码男同| 无码成人一区二区| 精品久久久久久无码人妻蜜桃| av色欲无码人妻中文字幕| 亚洲一区无码中文字幕乱码| 亚洲AV无码乱码国产麻豆穿越 | 无码一区二区三区亚洲人妻| 无码精品国产dvd在线观看9久| 国产亚洲精品a在线无码| 精品无码综合一区二区三区| 亚洲av中文无码字幕色不卡 | 无码熟妇αⅴ人妻又粗又大| 手机永久无码国产AV毛片| 国产成人无码午夜福利软件| aⅴ一区二区三区无卡无码| 亚州AV综合色区无码一区| 无码播放一区二区三区| 亚洲AV无码专区在线亚| 人妻丰满熟妇无码区免费| 亚洲av无码av制服另类专区| 无码AV中文字幕久久专区| 亚洲AV日韩AV高潮无码专区| 人妻丰满熟妇无码区免费| 在线观看成人无码中文av天堂| 亚洲av无码一区二区三区天堂古代 |