在 Linux 中,timer_list
是內核用于實現定時任務的數據結構
timer_list
變量:#include <linux/timer.h>
struct timer_list my_timer;
timer_list
:init_timer(&my_timer, CLOCK_REALTIME);
這里,我們使用 CLOCK_REALTIME
時鐘作為定時器的基準。你也可以選擇其他時鐘,例如 CLOCK_MONOTONIC
。
my_timer.expires = jiffies + msecs_to_jiffies(5000); // 5 秒后超時
這里,我們設置定時器在 5 秒后超時。jiffies
是內核表示時間的基本單位,msecs_to_jiffies
函數用于將毫秒轉換為 jiffies
。
void my_timer_callback(struct timer_list *unused) {
printk(KERN_INFO "Timer has expired!\n");
}
當定時器超時時,這個函數將被調用。
timer_list
:add_timer(&my_timer, my_timer_callback);
這里,我們將之前定義的回調函數 my_timer_callback
綁定到 my_timer
定時器上。
如果你需要在某個時刻取消定時器,可以使用 del_timer
函數:
del_timer(&my_timer);
將上述代碼片段組合在一起,你將得到一個簡單的基于 timer_list
的定時任務實現。當然,這只是一個基本示例,實際應用中你可能需要根據需求進行更多的定制。