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
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
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
留言
張貼留言