Linux内核BUG()调用不会挂起内核

时间:2013-06-17 02:05:08

标签: kernel smp

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

THX 穆拉利

1 个答案:

答案 0 :(得分:1)

BUG()本身不应该挂起盒子,所以你的系统行为没问题。

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