linux驱动中printk的使用注意事项
生活随笔
收集整理的這篇文章主要介紹了
linux驱动中printk的使用注意事项
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
今天在按鍵驅(qū)動(dòng)中增加printk(KERN_INFO "gpio_keys_gpio_isr()\n");在驅(qū)動(dòng)加載階段可以輸出調(diào)試信息,但驅(qū)動(dòng)加載起來(lái)后的信息,在串口端看不到輸出信息
在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 */
};
下面是控制臺(tái)日志級(jí)別的一些簡(jiǎn)要的介紹
?控制臺(tái)相應(yīng)的日志級(jí)別定義如下:
?#define MINIMUM_CONSOLE_LOGLEVEL 1 /*可以使用的最小日志級(jí)別*/
?#define DEFAULT_CONSOLE_LOGLEVEL 7 /*比KERN_DEBUG 更重要的消息都被打印*/
int console_printk[4] = {
?DEFAULT_CONSOLE_LOGLEVEL,/*控制臺(tái)日志級(jí)別,優(yōu)先級(jí)高于該值的消息將在控制臺(tái)顯示*/
?/*默認(rèn)消息日志級(jí)別,printk沒(méi)定義優(yōu)先級(jí)時(shí),打印這個(gè)優(yōu)先級(jí)以上的消息*/
?DEFAULT_MESSAGE_LOGLEVEL,
?/*最小控制臺(tái)日志級(jí)別,控制臺(tái)日志級(jí)別可被設(shè)置的最小值(最高優(yōu)先級(jí))*/
?MINIMUM_CONSOLE_LOGLEVEL,
?DEFAULT_CONSOLE_LOGLEVEL,/* 默認(rèn)的控制臺(tái)日志級(jí)別*/
?};
?在進(jìn)行查看的時(shí)候,可以使用命令 cat /proc/sys/kernel/printk來(lái)查看這四個(gè)值
6 ? 6 ? 1 ?7
可知我們系統(tǒng)默認(rèn)控制臺(tái)級(jí)別為第1個(gè)6,而我們要輸出的信息級(jí)別是KERN_INFO(剛好是6),如果要輸出這個(gè)信息,需要把第1個(gè)6改為7,修改命令:
echo “7 6 1 7” > /proc/sys/kernel/printk
或者是把上面printk(KERN_INFO "gpio_keys_gpio_isr()\n");改為KERN_ERR或是其他比他高級(jí)別的也可以。
但是在沒(méi)有改打印機(jī)級(jí)別,通過(guò)cat /proc/kmsg也可以抓調(diào)試信息也可以抓到這個(gè)信息。
在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 */
};
下面是控制臺(tái)日志級(jí)別的一些簡(jiǎn)要的介紹
?控制臺(tái)相應(yīng)的日志級(jí)別定義如下:
?#define MINIMUM_CONSOLE_LOGLEVEL 1 /*可以使用的最小日志級(jí)別*/
?#define DEFAULT_CONSOLE_LOGLEVEL 7 /*比KERN_DEBUG 更重要的消息都被打印*/
int console_printk[4] = {
?DEFAULT_CONSOLE_LOGLEVEL,/*控制臺(tái)日志級(jí)別,優(yōu)先級(jí)高于該值的消息將在控制臺(tái)顯示*/
?/*默認(rèn)消息日志級(jí)別,printk沒(méi)定義優(yōu)先級(jí)時(shí),打印這個(gè)優(yōu)先級(jí)以上的消息*/
?DEFAULT_MESSAGE_LOGLEVEL,
?/*最小控制臺(tái)日志級(jí)別,控制臺(tái)日志級(jí)別可被設(shè)置的最小值(最高優(yōu)先級(jí))*/
?MINIMUM_CONSOLE_LOGLEVEL,
?DEFAULT_CONSOLE_LOGLEVEL,/* 默認(rèn)的控制臺(tái)日志級(jí)別*/
?};
?在進(jìn)行查看的時(shí)候,可以使用命令 cat /proc/sys/kernel/printk來(lái)查看這四個(gè)值
6 ? 6 ? 1 ?7
可知我們系統(tǒng)默認(rèn)控制臺(tái)級(jí)別為第1個(gè)6,而我們要輸出的信息級(jí)別是KERN_INFO(剛好是6),如果要輸出這個(gè)信息,需要把第1個(gè)6改為7,修改命令:
echo “7 6 1 7” > /proc/sys/kernel/printk
或者是把上面printk(KERN_INFO "gpio_keys_gpio_isr()\n");改為KERN_ERR或是其他比他高級(jí)別的也可以。
但是在沒(méi)有改打印機(jī)級(jí)別,通過(guò)cat /proc/kmsg也可以抓調(diào)試信息也可以抓到這個(gè)信息。
總結(jié)
以上是生活随笔為你收集整理的linux驱动中printk的使用注意事项的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux Android 多点触摸协议
- 下一篇: 如何办理夫妻间的房屋产权转移手续?