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