在 Linux 中,timer_list
是內(nèi)核用于實現(xiàn)定時任務(wù)的數(shù)據(jù)結(jié)構(gòu)
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 秒后超時
這里,我們設(shè)置定時器在 5 秒后超時。jiffies
是內(nèi)核表示時間的基本單位,msecs_to_jiffies
函數(shù)用于將毫秒轉(zhuǎn)換為 jiffies
。
void my_timer_callback(struct timer_list *unused) {
printk(KERN_INFO "Timer has expired!\n");
}
當定時器超時時,這個函數(shù)將被調(diào)用。
timer_list
:add_timer(&my_timer, my_timer_callback);
這里,我們將之前定義的回調(diào)函數(shù) my_timer_callback
綁定到 my_timer
定時器上。
如果你需要在某個時刻取消定時器,可以使用 del_timer
函數(shù):
del_timer(&my_timer);
將上述代碼片段組合在一起,你將得到一個簡單的基于 timer_list
的定時任務(wù)實現(xiàn)。當然,這只是一個基本示例,實際應(yīng)用中你可能需要根據(jù)需求進行更多的定制。