禁用内核中断长时间重启?

时间:2014-02-10 00:55:39

标签: linux-kernel interrupt watchdog

在linux内核中,我有一段需要在禁用内核中断的情况下执行的代码。

代码包含在

spin_lock_irqsave(); spin_unlock_irqsave()

代码的执行时间是几秒钟。这不好吗?秒可以禁用内核中断吗?当我运行代码时,os重新启动并且错误是

未检测到错误 启动信息: 最后的启动原因:看门狗

这是什么意思?

由于

2 个答案:

答案 0 :(得分:1)

禁止中断几秒钟是非常糟糕的。

您必须使用例如可延迟函数重新创建代码。您可以使用tasklet或工作队列。仅在您真正需要它的那些点上禁用中断。

正如您所看到的,如果您长时间禁用中断 - 监视程序会重新启动您的系统。看门狗重新启动系统,因为它“认为”系统已冻结,因为您禁用了中断。

答案 1 :(得分:0)

是的,这是非常糟糕的。它可能会导致“硬锁定”(但取决于您的内核配置)。 如果有可能创建“下半部分”(好的方式),并在这些上下文中使用“硬”操作,它可能是先发制人的。 也不要在原子上下文中使用调度程序例程(上层底部,中断处理程序),它会导致内核崩溃。 您可以在第10章:中断处理(https://lwn.net/Kernel/LDD3/

中找到更多信息