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

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

在kernel/

/ We show everything that is MORE important than this.. /

define MINIMUM_CONSOLE_LOGLEVEL 1 / Minimum loglevel we let people use /

define DEFAULT_CONSOLE_LOGLEVEL 7 / anything MORE serious than KERN_DEBUG /

int console_printk[4] = {

DEFAULT_CONSOLE_LOGLEVEL, / console_loglevel /

DEFAULT_MESSAGE_LOGLEVEL, / default_message_loglevel /

MINIMUM_CONSOLE_LOGLEVEL, / minimum_console_loglevel /

DEFAULT_CONSOLE_LOGLEVEL, / default_console_loglevel /

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

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

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也可以抓调试信息也可以抓到这个信息。

Original: https://www.cnblogs.com/LoongEmbedded/p/5295608.html
Author: LoongEmbedded
Title: linux驱动中printk的使用注意事项

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/10292/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总