linux 核心 核心定時器

2021-08-09 20:59:37 字數 644 閱讀 3982

一.時鐘中斷概念

1.時鐘中斷由系統的定時硬體以週期性的時間間隔產生,這個間隔(即頻率)由核心根據hz來確定,hz是乙個與體系結構無關的常數,可配置(50-1200),在x86平台上預設值是1000

2.每當時鐘中斷發生的時候,全域性變數jiffies(unsigned long)就加1,所以jiffies就記錄了自linux啟動後時鐘中斷發生的次數,驅動程式常常利用jiffies來計算不同事件間的時間間隔

3.延遲

unsigned

long j=jiffies+jit_delay*hz;

while(jiffies/*do nothing*/

}//延遲了(1/jit_delay)s

二.核心定時器

1.定時器用於控制某個函式(定時器處理函式)在未來的某個特定時間執行。核心定時器註冊的處理函式只執行一次–不是迴圈執行的

雙向鍊錶,並用struct timer_list描述乙個核心定時器

struct timer_list

int timer_init(void)

void timer_exit(void)

module_init(timer_init);

module_exit(timer_exit);

linux核心定時器

度量時間差 時鐘中斷由系統的定時硬體以週期性的時間間隔產生,這個間隔 頻率 由核心根據hz來確定,hz是乙個與體系結構無關的常數,可配置 50 1200 在x86平台,預設值為1000.每秒鐘產生1000次時鐘中斷 每當時鐘中斷發生時,全域性變數jiffies就加1,因此其記錄了自linux啟動後時...

Linux 核心定時器

include include include include struct timer list my timer void func unsigned long data printk time out n data ld,pid ld n data,current pid mod timer ...

linux 核心定時器

1 asmlinkage void init start kernel void 2 void init init timers void 3 void open softirq int nr,void action struct softirq action 4 static void run t...