Timer 两个Linux内核计时器处理程序能否同时执行?
我正在编写一个包含计时器的内核模块,如下所示Timer 两个Linux内核计时器处理程序能否同时执行?,timer,linux-kernel,kernel,linux-device-driver,Timer,Linux Kernel,Kernel,Linux Device Driver,我正在编写一个包含计时器的内核模块,如下所示 timer1_callback(){ // task of timer1 } timer0_callback(){ while(1){ // Do some input processing if (condition){ Update timer1 to fire in 15 seconds from now } } } module_init(){
timer1_callback(){
// task of timer1
}
timer0_callback(){
while(1){
// Do some input processing
if (condition){
Update timer1 to fire in 15 seconds from now
}
}
}
module_init(){
//Initialize timer0 to fire in 1 second.
timer_setup(&timerl0, timer0_callback, 0);
mod_timer(&timerl0, jiffies + msecs_to_jiffies(1000));
//Initialize timer1 to fire in 15 seconds.
timer_setup(&timerl1, timer1_callback, 0);
mod_timer(&timerl1, jiffies + msecs_to_jiffies(15000));
}
我已按上述方式初始化计时器。在此设置中,timer0将处于无限循环中,等待一些输入(来自输入事件子系统)。根据该输入,如果满足条件,计时器1将更新为从该点起15秒内触发
当我执行上述系统时,根本没有执行timer1\u回调。即使满足条件,15秒后也没有开火
单独的计时器是在单独的线程中执行还是在单个线程中执行?
为什么第二个计时器从未被触发?而(1)使用100%的CPU,没有相同或更低优先级的运行。每个CPU都有一个按过期时间排序的计时器队列。通常,计时器回调函数在最后一个调用计时器上的
mod_timer
的CPU上运行。中断上下文中的无限循环非常巧妙!