如果在为用户进程提供服务(如系统调用或页面调入)的上下文中或在进程中发生内核中的 CPU 异常(如错误的内存访问或无效的操作码),则在设置kthread
之前,panic_on_oops
有用的信息将被转储,任务将终止。无需惊慌。有时系统仍然完全可用。足以让用户尝试同步磁盘、正常终止程序,并以其他方式为紧急重启做准备。
但不幸的是,如果异常发生在原子上下文中(如中断或软中断),则采取的操作始终是内核恐慌(带有描述"Fatal exception in interrupt"
)——无论任何设置或构建时配置如何。这很可悲。为什么不能模拟中断返回,并保持系统运行,希望某些部分仍能正常工作?谢谢。
我知道我可以mdelay()
在“中断异常”的代码路径中放置一个无限,而不是panic()
,这样只会让本地 CPU 停滞。但通常在发生这种情况后就没有什么可以做的事情了……即使机器中有数百个 CPU,它们很快就会全部锁定。所以不是很有用。