gpt4 book ai didi

linux - printk loglevel 在模块编程中的使用

转载 作者:IT王子 更新时间:2023-10-29 00:53:17 24 4
gpt4 key购买 nike

在书中LDD3 by Rubini ,在 printk 部分下,作者说我们可以为我们的消息提供日志级别/优先级。但是我尝试了一个简单的模块程序,它具有不同的 printk 日志级别,但它显示的顺序与我在程序中写入 printk 消息的顺序相同,为什么它不根据优先级打印?

我把代码复制过来了

  #include<linux/module.h>
#include<linux/kernel.h>
static __init int log_init(void)
{
printk(KERN_INFO"inside init 4 \n");
printk(KERN_ERR"inside init 3\n");
printk(KERN_CRIT"inside init 2\n");

return 0;
}
static __exit void log_exit(void)
{
printk("inside exit\n");
}
module_init(log_init);
module_exit(log_exit);

MODULE_LICENSE("GPL");

我得到如下输出

[ 1508.721441] inside init 4 
[ 1508.721448] inside init 3
[ 1508.721454] inside init 2
root@jitesh-desktop:~/DD/debug/print#

所以我如何根据优先级打印它

init 2
init 3
init 4

最佳答案

您混淆了 printk 优先级的目的。它们并不像您希望的那样改变执行顺序。

通过为不同的内核消息分配不同的优先级,我们可以通过内核命令行指定适当的 loglevel 值来过滤出出现在控制台上的所需消息。例如,在 linux 内核中。有许多具有 KERN_DEBUG 优先级的消息。这些只是普通的调试信息。因此,如果您将 loglevel 启用到最大值 7,那么您将在控制台上看到大量消息!!您的重要错误和警告将被掩埋在这一系列正常的调试消息中。

因此,当您调试严重问题时,您可以将 loglevel 指定为较低的值,以便在控制台上仅显示严重错误和警告。

注意:无论loglevel如何,所有printk消息都存储在内核缓冲区中。优先级决定了其中哪一个进入控制台。

关于linux - printk loglevel 在模块编程中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11242328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com