gpt4 book ai didi

c - linux内核模块使用timer_list导致系统崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 06:09:59 25 4
gpt4 key购买 nike

我正在编写一个使用动态计时器的内核 (2.6.28) 模块。我正在使用 timer_list 结构,如下所示:

struct timer_list our_timer;
init_timer(&our_timer);
our_timer.function = handleFlowTimer;
our_timer.expires = jiffies + 2000;
our_timer.data = 0;
add_timer(&our_timer);

void handleFlowTimer(unsigned long data)
{
//do nothing
}

在计时器到期之前,这可以正常工作大约 2 秒。然后系统崩溃。我也尝试过类似的结果:

struct timer_list our_timer = TIMER_INITIALIZER(handleFlowTimer, 0, 0);
mod_timer(&our_timer, jiffies + 2000);

如有任何帮助,我们将不胜感激!

最佳答案

our_timer 分配在堆栈上,您将指针传递给它。最有可能的是 our_timer 超出范围,被覆盖,并且在 2 秒后值 our_timer.function 无效。

our_timer 设为 static 变量或使用 kmalloc

关于c - linux内核模块使用timer_list导致系统崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1139836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com