(一) printk函数中几个宏的消息级别的定义:
#define KERN_EMERG "<0>" /*紧急事件,一般是系统崩溃之前的提示信息*/
#define KERN_ALERT "<1>" /*必须立即采取行动*/
#define KERN_CRIT "<2>" /*临界状态,通常涉及严重的硬件或者软件操作失误*/
#define KERN_ERR "<3>" /*用户报告错误状态,设备驱动会经常使用KERN_ERR来报告硬件错误*/
#define KERN_WARNING "<4>" /*对可能出现的情况进行警告,这类情况通常不会对系统造成严重的问题*/
#define KERN_NOTICE "<5>" /*有必要进行提示的正常情形,许多与安全相关的状态用这个级别进行报告*/
#define KERN_INFO "<6>" /*内核提示性信息,很多驱动程序再启动的时候以这个级别打印找到的硬件信息*/
#define KERN_DEBUG "<7>" /*用于调试信息*/
(二)printk函数的使用:
static int hello_init(void)
{
printk(KERN_ALERT "hello world!\n");
return 0;
}
其中,/proc/sys/kernel/printk的printk文件可以调节printk的输出级别:
控制台日志级别:一般表示优先级高于该值的消息将被打印到控制台;
默认的消息日志级别:一般表示用户打印没有任何定义优先级的消息(即像上例hello前什么都不写);
最低的控制台日志级别:表示控制台级别可被设置的最小值;
默认的控制台日志级别:用来设置控制台日志级别的默认值。