printk()函数-消息优先级宏

Posted senchuangdianzi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了printk()函数-消息优先级宏相关的知识,希望对你有一定的参考价值。

在对内核进行代码调试的时候,除了打开相应的内核开发配置选项之外,最普通也是最常用的调试就是打印出相关信息进行调试,对某些怀疑的变量进行监视,在用户空间下,我们最常用的方式是通过printf()函数来进行相关信息的输出,而在内核调试中,我们常用printk()函数来进行相关关键信息的输出,与printf()函数不同的地方是,printk()函数有消息输出优先级,即(loglevel),而这些loglevel是用相关的宏进行控制,例如:
printk(KERN_DEBUG "I am Senmashijie: %s:%i
",__FILE__,__LINE__);
printk(KERN_CRIT "I am Senmashijie transhed;giving up on %p
",ptr);

KERN_DEBUG 和 KERN_CRIT 就是消息输出优先级的宏,那么它们分别代表什么意思呢?

在<linux/kernel.h>中定义了8中可用的级别字符串,它们分别是:

KERN_EMERG
    用于紧急事件消息,一般是系统在崩溃之前提示的消息。

KERN_ALERT
   用于需要立即采取行动的动作。

KERN_CRIT
     临界状态,通常涉及严重的硬件或软件操作失败。

KERN_ERR
    用于报告错误状态。设备驱动程序会经常使用KERN_ERR来报告硬件的问题。

KERN_WARING
    对可能的问题进行警告,通常这类信息不会对系统造成较为严重的问题。

KERN_NOTICE
    必要提示,一般是安全相关的信息提示,使用KERN_NOTICE。

KERN_INFO
    提示性信息。驱动程序在启动的时候会以这个级别打印出它们所找到的硬件信息。

KERN_DEBUG
    用于调试信息。

  上述8中字符串信息,以宏的形式展开后表示一个整数,整数值的范围:0~7,数值越小,优先级越高。

希望以上总结信息对大家有所帮助。

以上是关于printk()函数-消息优先级宏的主要内容,如果未能解决你的问题,请参考以下文章

Linux-驱动printk的打印级别

printk函数打开和关闭消息

printk()和printf()的比较

printk 函数消息是如何记录的

inline内联函数

Linux系统日志级别