锁定检测的限制
前面对内核soft lockup功能的锁定检测进行了确认,但是该功能的结构不能检测出禁止中断状态下的锁定。这是因为soft lockup的检测是通过计时器中断的延长来进行的。禁止中断状态下的锁定检测可以使用NMI看门狗计时器Hack#57或IPMI看门狗计时器Hack#56。
为了验证soft lockup功能是无法检测的,这里使用测试用内核模块(hardlockup.c)在禁止中断状态下进行无限循环。
cat hardlockup.c
include<linux/module.h>
include<linux/irqflags.h>
static int lockup_init(void)
{
local_irq_disable();
for(;)
;
return 0;
}
static void lockup_exit(void)
{
}
module_init(lockup_init);
module_exit(lockup_exit);