(一) 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前什麼都不寫);
最低的控制檯日誌級別:表示控制檯級別可被設置的最小值;
默認的控制檯日誌級別:用來設置控制檯日誌級別的默認值。