|  | 
 
| 在linux驱动中通常使用printk函数实现串口输出,跟踪调试信息。 与标准C语言的printf不同的是,printk支持分级输出。
 
 在linux/kernel.h中,定义了以下8个级别:
 #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                */
 
 通常我们使用如下语句打印跟踪信息:
 printk(KERN_INFO"your message\n");
 
 如果不定义输出级别,即使用下面的语句打印信息:
 printk("your message\n");
 则用默认的级别DEFAULT_MESSAGE_LOGLEVEL。
 
 在printk.c中,定义了默认的级别:
 #define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING */
 
 在/linux/kernel.h中定义了打印的级别console_loglevel以及缺省的打印级别default_message_loglevel:
 #define console_loglevel (console_printk[0])
 #define default_message_loglevel (console_printk[1])
 console_printk[]数组定义为:
 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 DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING */
 /* 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 */
 可见,打印级别为DEFAULT_CONSOLE_LOGLEVEL=7,任何小于该级别的输出都会显示在终端上。我们可以修改console_loglevel以控制打印输出。
 
 
 | 
 |