欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡(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)文章

  • Ubuntu下sublime中文無(wú)法輸入的處理方案

    Ubuntu下sublime中文無(wú)法輸入的處理方案

    本文主要是給出了Ubuntu下sublime中文無(wú)法輸入的處理方案,非常的實(shí)用,遇到相同問(wèn)題的小伙伴們可以參考下
    2014-11-11
  • Linux多線程編程快速入門(mén)

    Linux多線程編程快速入門(mén)

    這篇文章主要介紹了Linux多線程編程快速入門(mén),涉及到了線程基本知識(shí),線程標(biāo)識(shí),線程創(chuàng)建,線程終止,管理線程的終止等相關(guān)內(nèi)容,小編覺(jué)得還是挺不錯(cuò)的,這里分享給大家,需要的朋友可以參考下
    2018-01-01
  • Linxu服務(wù)器上安裝JDK 詳細(xì)步驟

    Linxu服務(wù)器上安裝JDK 詳細(xì)步驟

    這篇文章主要介紹了Linxu服務(wù)器上安裝JDK 詳細(xì)步驟,在安裝之前需要先卸載自己linux上的jdk,具體內(nèi)容詳情大家參考下本文
    2017-12-12
  • 使用?DataAnt?監(jiān)控?Apache?APISIX的原理解析

    使用?DataAnt?監(jiān)控?Apache?APISIX的原理解析

    Apache?APISIX?是一個(gè)開(kāi)源的云原生?API?網(wǎng)關(guān),作為?API?網(wǎng)關(guān),它兼具動(dòng)態(tài)、實(shí)時(shí)、高性能等特點(diǎn),提供了負(fù)載均衡、動(dòng)態(tài)上游、灰度發(fā)布、服務(wù)熔斷、身份認(rèn)證、可觀測(cè)性等豐富的流量管理功能,這篇文章主要介紹了如何使用?DataAnt?監(jiān)控?Apache?APISIX,需要的朋友可以參考下
    2022-06-06
  • Linux中的curl命令詳解

    Linux中的curl命令詳解

    大家應(yīng)該都知道在Linux中curl是一個(gè)利用URL規(guī)則在命令行下工作的文件傳輸工具,可以說(shuō)是一款很強(qiáng)大的http命令行工具。它支持文件的上傳和下載,是綜合傳輸工具,但按傳統(tǒng),習(xí)慣稱url為下載工具。本文將詳細(xì)介紹Linux中的curl命令,下面來(lái)一起看看吧。
    2016-11-11
  • Linux dirname命令的具體使用

    Linux dirname命令的具體使用

    這篇文章主要介紹了Linux dirname命令的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • linux文件管理命令實(shí)例分析【顯示、查看、統(tǒng)計(jì)等】

    linux文件管理命令實(shí)例分析【顯示、查看、統(tǒng)計(jì)等】

    這篇文章主要介紹了linux文件管理命令,結(jié)合實(shí)例形式分析Linux文件管理的顯示、查看、統(tǒng)計(jì)等相關(guān)操作命令使用技巧,需要的朋友可以參考下
    2020-03-03
  • linux下快速列出局域網(wǎng)中所有主機(jī)名(計(jì)算機(jī)名)的腳本

    linux下快速列出局域網(wǎng)中所有主機(jī)名(計(jì)算機(jī)名)的腳本

    這篇文章主要介紹了linux下快速列出局域網(wǎng)中所有主機(jī)名(計(jì)算機(jī)名)的腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 關(guān)于如何在崩潰或重啟后保持Linux進(jìn)程運(yùn)行的解決方法

    關(guān)于如何在崩潰或重啟后保持Linux進(jìn)程運(yùn)行的解決方法

    在計(jì)算機(jī)系統(tǒng)中,進(jìn)程的穩(wěn)定性和持久性對(duì)于確保系統(tǒng)正常運(yùn)行至關(guān)重要,在 Linux 系統(tǒng)中,由于各種原因,進(jìn)程可能會(huì)面臨崩潰或系統(tǒng)重啟的情況,為了確保關(guān)鍵進(jìn)程的持續(xù)運(yùn)行,我們需要采取一些措施來(lái)處理這種情況,文中給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • linux增加iptables防火墻規(guī)則的示例

    linux增加iptables防火墻規(guī)則的示例

    這篇文章主要介紹了linux增加iptables防火墻規(guī)則的示例,大家在使用的時(shí)候要把規(guī)則后的中文注釋去掉
    2014-01-01

最新評(píng)論