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也能夠抓調試信息也能夠抓到這個信息。

相關文章
相關標籤/搜索