麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 服務器 > Linux服務器 > 正文

簡單談談Linux內核定時器

2024-09-05 23:04:16
字體:
來源:轉載
供稿:網友

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

總結起來還是軟中斷的流程

a.注冊軟中斷處理函數

/*/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.觸發軟中斷處理函數

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

d.調用軟中斷處理函數

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

1) 一個timer_list 結構體的實例對應一個定時器,其定義如下:

struct timer_list {   struct list_head entry, /*定時器列表*/   unsigned long expires, /*定時器到期時間*/   void (*function) (unsigned long), /*定時器處理函數*/   unsigned long data,/*作為參數被傳入定時器處理函數*/   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);


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄色视屏免费看 | 亚洲国产视频在线 | 国产精品视频yy9299一区 | 久久久久久久一区 | 欧美精品免费一区二区三区 | 中国免费一级毛片 | 久久99精品久久久久久236 | 欧美十区 | 日本特级a一片免费观看 | 国产毛片视频 | 一色桃子av大全在线播放 | 一级做受毛片免费大片 | 精品国产一区二区三区在线观看 | 黄色网址进入 | 日韩精品一区二区三区中文 | 色妞视频男女视频 | 澳门一级淫片免费视频 | 亚洲啊v在线观看 | 日本aaaa片毛片免费观蜜桃 | 精品久久久久久亚洲精品 | 国产精品久久久久久久四虎电影 | 免费放黄网站在线播放 | 一级黄色欧美 | 久久噜噜噜精品国产亚洲综合 | caoporn国产一区二区 | 免费亚洲视频在线观看 | 国产九九九九 | 国产中出在线观看 | 久草视频福利在线观看 | 二级大黄大片高清在线视频 | 一本色道精品久久一区二区三区 | 污片在线观看视频 | 日韩视频一区二区三区在线观看 | 毛片天天看| 自拍亚洲伦理 | 免费毛片播放 | 欧产日产国产精品99 | 国产成人自拍视频在线观看 | 精品无码久久久久久国产 | 国产精品久久久久久久娇妻 | 91色一区二区三区 |