锁定检测的限制

前面对内核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);