最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年10月23日 08:30:44   作者:yangjiguang  
內(nèi)核定時(shí)器用于控制某個(gè)函數(shù)(定時(shí)器處理函數(shù))在未來(lái)的某個(gè)特定時(shí)間執(zhí)行.內(nèi)核定時(shí)器注冊(cè)的處理函數(shù)只執(zhí)行一次.處理過(guò)后即失效.

軟件意義上的定時(shí)器最終依賴硬件定時(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);

相關(guān)文章

  • Xshell實(shí)現(xiàn)Windows上傳文件到Linux主機(jī)的方法

    Xshell實(shí)現(xiàn)Windows上傳文件到Linux主機(jī)的方法

    這篇文章主要介紹了Xshell實(shí)現(xiàn)Windows上傳文件到Linux主機(jī)的方法,需要的朋友可以參考下
    2017-12-12
  • Ubuntu 16.04與Apache虛擬主機(jī)配置的步驟詳解

    Ubuntu 16.04與Apache虛擬主機(jī)配置的步驟詳解

    這篇文章主要給大家介紹了關(guān)于Ubuntu 16.04與Apache虛擬主機(jī)配置的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ubuntu16.04系統(tǒng)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們來(lái)一起看看吧。
    2018-04-04
  • 詳述Linux中Firewalld高級(jí)配置的使用

    詳述Linux中Firewalld高級(jí)配置的使用

    這篇文章主要介紹了詳述Linux中Firewalld高級(jí)配置的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • VirtualBox 未指定要bridged的網(wǎng)絡(luò)界面的解決辦法

    VirtualBox 未指定要bridged的網(wǎng)絡(luò)界面的解決辦法

    這篇文章主要介紹了VirtualBox 未指定要bridged的網(wǎng)絡(luò)界面的解決辦法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家解決遇到這樣的問(wèn)題,需要的朋友可以參考下
    2017-10-10
  • Linux中關(guān)于inode的知識(shí)總結(jié)

    Linux中關(guān)于inode的知識(shí)總結(jié)

    這篇文章主要給大家介紹了在Linux中關(guān)于inode的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-06-06
  • Linux shell tr 命令詳解

    Linux shell tr 命令詳解

    這篇文章主要介紹了Linux shell tr 命令詳解的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • ubuntu (linux)修改網(wǎng)卡名稱命令

    ubuntu (linux)修改網(wǎng)卡名稱命令

    這篇文章主要介紹了ubuntu (linux)修改網(wǎng)卡名稱命令的相關(guān)資料,這里提供了實(shí)現(xiàn)的命令代碼,需要的朋友可以參考下
    2016-11-11
  • Linux中samba服務(wù)器的搭建教程

    Linux中samba服務(wù)器的搭建教程

    這篇文章主要為大家詳細(xì)介紹了Linux中samba服務(wù)器的搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • linux服務(wù)器磁盤爆滿的處理方案

    linux服務(wù)器磁盤爆滿的處理方案

    文章描述了Linux服務(wù)器磁盤爆滿導(dǎo)致Redis服務(wù)無(wú)法訪問(wèn)的問(wèn)題,通過(guò)一系列命令查找并刪除大文件,解決了磁盤空間不足的問(wèn)題,同時(shí),文章介紹了如何配置Nacos以防止日志文件過(guò)大導(dǎo)致磁盤空間爆滿,需要的朋友可以參考下
    2025-02-02
  • SSH 登錄工具常用命令

    SSH 登錄工具常用命令

    既然申請(qǐng)了國(guó)外的主機(jī),那么SSH登錄工具肯定是必不可少的,這里羅列一些常用的SSH命令,以備查用。
    2009-02-02

最新評(píng)論

舞阳县| 太和县| 新安县| 济源市| 视频| 博客| 玉田县| 盘锦市| 阿尔山市| 长岛县| 临泉县| 新昌县| 江西省| 阿城市| 烟台市| 塔河县| 中西区| 扎鲁特旗| 满城县| 岢岚县| 乌鲁木齐县| 七台河市| 凉山| 泽州县| 英吉沙县| 绵竹市| 松溪县| 陇南市| 平利县| 上蔡县| 沭阳县| 米林县| 潜山县| 城步| 美姑县| 桦川县| 陇川县| 龙岩市| 洪雅县| 阜新| 大方县|