国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 服務(wù)器 > Linux服務(wù)器 > 正文

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

2024-09-05 23:04:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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

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

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

b.添加timer_list到某個(gè)鏈表

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

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

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

實(shí)例化 struct timer_list my_timer;

2) 初始化定時(shí)器

void init_timer (struct timer_list *timer);TIMER_INITIALIZER (_function, _expires, _data)DEFINE_TIMER (_name, _function, _expires, _data)setup_timer ();

3) 增加定時(shí)器

void add_timer (struct timer_list *timer);

4) 刪除定時(shí)器

int del_timer (struct timer_list *timer);

5) 修改定時(shí)器的expire

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


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 昌吉市| 景谷| 股票| 临澧县| 绥江县| 若尔盖县| 潍坊市| 平塘县| 凤台县| 临安市| 铜山县| 牙克石市| 武乡县| 英吉沙县| 孝昌县| 三江| 新野县| 陇南市| 三穗县| 望奎县| 宜君县| 奉新县| 社旗县| 光山县| 郑州市| 临清市| 黄石市| 婺源县| 洛浦县| 阿克陶县| 京山县| 肇源县| 平山县| 顺平县| 陆川县| 育儿| 张北县| 临潭县| 治县。| 永定县| 项城市|