2015-06-20 51 views
1

我尝试修改tizen内核。 我正在测试每一行。所以,我发现mod_timer是内核错误 有什么问题?内核定时器功能错误

代码是

void timer_add(void){ 
     struct timer_list timer; 
     setup_timer(&timer, kill_callback, 0); 
     mod_timer(&timer, jiffies + msecs_to_jiffies(3000)); 
    } 

void kill_callback(unsigned long data) 
{ 
    sys_kill(current->pid, SIGKILL); 
    return ; 
} 

[19.029281]无法在虚拟addre处理内核空指针引用

+0

转储文件是 c002de24:e593200c LDR R2,[R 3,#12] c002de28:e3120001 TST R2,#1 c002de2c:1a000004 BNE c002de44 c002de30:e5932008 LDR R2,[R3, #8] –

+0

请告诉我们关于哪个tizen配置文件或内核源码? – RzR

回答

1

你的功能timer_add声明局部变量的定时器,它超出范围时的函数返回。但是您将它作为参数传递给setup_timer函数,它用于设置您的回调函数。

当稍后执行回调函数时,它会引用您的变量timer,该变量不再存在。

您必须将变量计时器声明为静态变量或使用全局变量。