linux驱动中printk的使用注意事项

今天在按键驱动中增长printk(KERN_INFO "gpio_keys_gpio_isr()\n");在驱动加载阶段能够输出调试信息,但驱动加载起来后的信息,在串口端看不到输出信息this

在kernel/调试

/* We show everything that is MORE important than this.. */日志

#define MINIMUM_CONSOLE_LOGLEVEL 1 /* Minimum loglevel we let people use */io

#define DEFAULT_CONSOLE_LOGLEVEL 7 /* anything MORE serious than KERN_DEBUG */console

 

int console_printk[4] = {import

       DEFAULT_CONSOLE_LOGLEVEL,    /* console_loglevel */im

       DEFAULT_MESSAGE_LOGLEVEL,    /* default_message_loglevel */ant

       MINIMUM_CONSOLE_LOGLEVEL, /* minimum_console_loglevel */co

       DEFAULT_CONSOLE_LOGLEVEL,    /* default_console_loglevel */let

};

 

下面是控制台日志级别的一些简要的介绍

 控制台相应的日志级别定义以下:

 #define MINIMUM_CONSOLE_LOGLEVEL  1   /*能够使用的最小日志级别*/

 #define DEFAULT_CONSOLE_LOGLEVEL  7 /*比KERN_DEBUG 更重要的消息都被打印*/

 

int console_printk[4] = {

 DEFAULT_CONSOLE_LOGLEVEL,/*控制台日志级别,优先级高于该值的消息将在控制台显示*/

 /*默认消息日志级别,printk没定义优先级时,打印这个优先级以上的消息*/

 DEFAULT_MESSAGE_LOGLEVEL,

 /*最小控制台日志级别,控制台日志级别可被设置的最小值(最高优先级)*/

 MINIMUM_CONSOLE_LOGLEVEL,

 DEFAULT_CONSOLE_LOGLEVEL,/* 默认的控制台日志级别*/

 };

 在进行查看的时候,能够使用命令 cat /proc/sys/kernel/printk来查看这四个值

6   6   1  7

可知咱们系统默认控制台级别为第1个6,而咱们要输出的信息级别是KERN_INFO(恰好是6),若是要输出这个信息,须要把第1个6改成7,修改命令:

echo “7 6 1 7” > /proc/sys/kernel/printk

 

或者是把上面printk(KERN_INFO "gpio_keys_gpio_isr()\n");改成KERN_ERR或是其余比他高级别的也能够。

 

 

可是在没有改打印机级别,经过cat /proc/kmsg也能够抓调试信息也能够抓到这个信息。

相关文章
相关标签/搜索