new linux device driver - timer

github example




1. include

#include <linux/timer.h>

2. timer_list

static struct timer_list my_timer;

3. 設定

從 Linux 4.14 開始, 改用 timer_setup

void timer_setup(struct timer_list *timer, void (*callback)(struct timer_list *),
       unsigned int flags);

callback function 參數改成 struct timer_list *


4. 啟動

mod_timer(&my_timer, jiffies + msecs_to_jiffies(500));

mod_timer 第二個參數是 jiffies , 是 Linux 的時間單位

jiffies 是指目前時間, 即從開機以來, 系統經過多少 ticks.

ticks 指的是 CPU clock, 一個震盪就是一個 ticks

也因此 msecs_to_jiffies(500) 就是把 500ms 轉換看多少 ticks.
加上目前的時間, 就是之後要啟動的時間

6.  刪除

remove module 時, 將此 timer 移除
del_timer(&my_timer);

結果:

[21939.160879] hello_init: fire timer after 500ms
[21939.669054] my_timer_callback is called

留言

熱門文章