LINUX驅動程式設計 核心定時器

2021-08-19 18:31:15 字數 1034 閱讀 6836

timer_list結構體:

struct timer_list ;

1,定義乙個timer_list定時器

struct timer_list my_timer;

2,初始化定時器

1)void init_timer(struct timer_list *timer);

上述init_timer()函式初始化timer_list 的entry 的next 為null,並給base 指標賦值。

timer->function = ***_do_timer;

timer->data = (unsigned long)data;

timer->expires = jiffies + delay;

2)timer_initializer(_function, _expires, _data)

巨集用於賦值定時器結構體的function、expires、data和ba se 成員,

3,增加定時器

void add_tiemr(struct timer_list * timer);

將定時器加入到核心動態定時器鍊錶中

4,刪除定時器

int del_timer(struct timer_list *timer);

5,修改定時器

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

修改定時器的到期時間,在新的被傳入的expires 到來後才會執行定時器函式。

簡單的使用模版

struct mdevice ;

struct mdevice mdve;

void ***_do_timer(unsigned long data)

int __init mdevice_init(void)

void __exit mdevice_exit(void)

舉例:1,使用核心定時器去除按鍵的抖動

按鍵觸發中斷時,中斷處理函式延時執行

linux核心驅動之定時器

運用場景 1.初始化乙個驅動,經過一定的時間再執行乙個特殊動作 2.初始化乙個驅動,之後每隔一定的時間執行乙個特殊動作 定時器工作流程 a.建立timer,編寫定時器處理函式 b.為timer的expires data function賦值 c.呼叫add timer將timer加入列表 d.定時器...

Linux裝置驅動 核心定時器

核心定時器使用 核心定時器是核心用來控制在未來某個時間點 基於jiffies 排程執行某個函式的一種機制,其實現位於 和 kernel timer.c 檔案中。被排程的函式肯定是非同步執行的,它類似於一種 軟體中斷 而且是處於非程序的上下文中,所以排程函式必須遵守以下規則 1 沒有 current ...

Linux裝置驅動開發 核心定時器

1.linux核心定時器是核心用來控制在未來某個時間點 基於jiffies 排程執行某個函式的一種機制,其實現位於 和 kernel timer.c 檔案中。2.被排程的函式是非同步執行的,它類似於一種 軟體中斷 而且是處於非程序的上下文中,所以排程函式必須遵守以下規則 1 沒有 current 指...