linux核心定時器

2021-05-26 21:06:14 字數 746 閱讀 3927

度量時間差

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

每當時鐘中斷發生時,全域性變數jiffies就加1,因此其記錄了自linux啟動後時鐘中斷發生的次數。驅動程式常利用jiffies來計算不同事件間的時間間隔。

如果對延遲的精度要求不高,最簡單的實現方法如下----忙等待:

unsigned long j=jiffies

+ jit_delay*hz

while(jiffies

核心定時器----

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

核心定時器被組織成雙向鍊錶,並使用struct timer_list結構來描述。

struct timer_list ;

核心定時器操作----

void init_timer(struct timer_list *timer)

初始化定時器結構,這裡會初始化兩個成員,還需手動給其它三個成員初始化。

void add_timer(struct timer_list *timer)

啟動定時器

int del_timer(struct timer_list *timer)

在定時器超時前將他刪除。當定時器超時後,系統自動的將它刪除。

linux 核心 核心定時器

一.時鐘中斷概念 1.時鐘中斷由系統的定時硬體以週期性的時間間隔產生,這個間隔 即頻率 由核心根據hz來確定,hz是乙個與體系結構無關的常數,可配置 50 1200 在x86平台上預設值是1000 2.每當時鐘中斷發生的時候,全域性變數jiffies unsigned long 就加1,所以jiff...

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...