我正在使用kdump功能来生成内核崩溃核心文件。 我创建了一个小的内核模块,该模块会导致内核监视程序崩溃
static int watchdog_crash(void *unused)
{
unsigned long flags;
spin_lock_irqsave(&wdt_lock, flags);
udelay(1000);
while(1);
return 0;
}
static void kernel_thread()
{
struct task_struct *t1;
t1 = kthread_create_on_cpu(watchdog_crash, NULL, 0, "mythread1");
if(t1) {
printk(KERN_EMERG "MANALI: Thread 1 Created Sucessfully\n");
wake_up_process(t1);
} else {
printk(KERN_EMERG "MANALI: Thread 1 Creation Failed\n");
}
}
当我插入模块时,它正在创建一个看门狗异常,但问题是它无法将ipi(处理器间中断)发送到生成内核文件时该内核线程被阻塞的CPU。我只想知道会发生这种情况,因为spin_lock_irqsave()会禁用所有中断。它也禁用IPI中断吗?