1

我正在运行旧版本的 linux 代码(2.6.27)。我定义了 CONFIG_BUG=y 和 HAVE_ARCH_BUG 。所以我在 asm-x86/bug.h 中使用 BUG() 定义而不是 asm-generic。我看到当我安装一个测试模块(它只有一个 BUG() 调用)时,它不会使盒子崩溃。我能够进入控制台。这是一个 SMP 系统,所以我希望如此。我的问题是,按照设计,BUG() 是否应该像恐慌一样挂起盒子?如果是这样,为什么它不在这个内核上?

谢谢穆拉利

4

1 回答 1

1

BUG()本身不应该挂盒子,所以你系统的行为是OK的。

在 x86 上,BUG()最终尝试执行ud2导致“无效操作码”异常的机器指令。由内核决定如何处理它,是输出消息并继续工作还是停止。不同的内核在这里可能会以不同的方式做出反应。

于 2013-06-17T19:30:40.287 回答