Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Timer 两个Linux内核计时器处理程序能否同时执行?_Timer_Linux Kernel_Kernel_Linux Device Driver - Fatal编程技术网

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上运行。中断上下文中的无限循环非常巧妙!