【发布时间】:2015-07-13 10:22:43
【问题描述】:
我正在为我的内核模块中的某些参数实现超时。
所以我使用 struct timer_list 和相关 API 来实现 12 秒计时器。
正如我在 IBM developer Works guide for kernel timers 中提到的那样:
struct timer_list my_timer;
init_timer_on_stack(&my_timer);
void tick_timer()
{
my_timer.expires = jiffies + delay * HZ; //delay is global variable int = 12.
my_timer.data=0;
my_timer.function = my_timer_func;
add_timer(&my_timer);
}
所以每次我的计时器到期时,我都会在my_timer_func 中工作并再次致电tick_timer 以重置计时器。
接下来,我想将delay 实现为 sysctl 条目。
但更改应立即调用tick_timer 函数并使用新的delay 重置计时器。那么我怎样才能检测到这种变化并删除任何当前的计时器或重置它。
是否应该有内核线程来检测delay的变化
【问题讨论】:
标签: timer linux-kernel timeout linux-device-driver kernel-module