c-导致内核崩溃的内核模块打印语句



每当我在if-else块中放入任何printk语句时,它只会破坏Linux中的内核。

下面给出了一个示例代码:

if (device-> Some condition) {
        s = 0;
        e = 0;
        printk(KERN_INFO "I am 0 and 0 part n");
        printk(KERN_ALERT "KERN_INFO Successfully registered module n");
} else {
        s = 1;
        e = 2;
        printk(KERN_INFO "I am in 1 and 1 part n");
}

当我完成上面的代码时,它会被成功编译。但在insmod期间,内核停止响应并最终崩溃。相反,如果我注释掉那些printk语句,那么我可以很容易地执行insmod

我想知道这种行为的可能原因,以及我如何才能去除这些东西。

有些情况下不应该调用printk,请参阅

http://lkml.iu.edu/hypermail/linux/kernel/0606.1/2198.html

printk在一个中断处理程序中,它真的那么糟糕吗?

因此,如果您的整个代码都在这种情况下,那么请避免使用printK(),尝试使用其他备选选项dev_dbg()trace_printk()

最新更新