Linux-驱动printk的打印级别

Posted LinuxRookie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux-驱动printk的打印级别相关的知识,希望对你有一定的参考价值。

级别:
日志级别用宏表示,日志级别宏展开为一个字符串,在编译是由预处理器将它和消息
本文拼接成一个字符串,因此printk函数中日志级别宏和格式字符串间不能有逗号。
printk的日志级别定义在 /include/linux/kernel.h 中:

#define    KERN_EMERG     "<0>"    /* system is unusable            */
#define    KERN_ALERT     "<1>"    /* action must be taken immediately    */
#define    KERN_CRIT      "<2>"    /* critical conditions            */
#define    KERN_ERR       "<3>"    /* error conditions            */
#define    KERN_WARNING   "<4>"    /* warning conditions            */
#define    KERN_NOTICE    "<5>"    /* normal but significant condition    */
#define    KERN_INFO      "<6>"    /* informational            */
#define    KERN_DEBUG     "<7>"    /* debug-level messages            */

日志级别的范围"0~7",没有指定日志级别的printk语句默认采用的级别是
DEFAULT_MESSAGE_LOGLEVEL,其定义列出如下(在/kernel/printk.c中):

#define DEFAULT_MESSAGE_LOGLEVEL  4

当printk语句采用的级别高于4时(该宏表示的数字小于4)将在终端打印。
通过如下命令可以让所有打印输出到终端:

echo 8 > /proc/sys/kernel/printk

dmesg命令 通过查看/proc/kmsg文件可以打印所有的内核信息






以上是关于Linux-驱动printk的打印级别的主要内容,如果未能解决你的问题,请参考以下文章

Android深度探索(卷一)HAL与驱动开发 第十章

第十章

第1个linux驱动___打印"hello world"

第1个linux驱动___打印"hello world"

Linux 驱动 Printk 在终端没有输出

更改printk打印级别