close

 

在kernel 中模組如果要列印出訊息,由於不能連結一般函式庫,只能與核心的函式庫連結。

因此printf() 就不能使用了,只能使用printk()。

EX:

 

printk(KERN_DEBUG "Here I am: %s:%i\n", __FILE__, __LINE__);
printk(KERN_CRIT "I'm trashed; giving up on %p\n", ptr);

 

它有 8 種可能的記錄字串在頭檔 <linux/kernel.h> 裏定義我們按照嚴重性遞減的順序列出它們

KERN_EMERG

用於緊急消息, 常常是那些崩潰前的消息.

KERN_ALERT

需要立刻動作的情形.

KERN_CRIT

嚴重情況, 常常與嚴重的硬體或者軟體失效有關.

KERN_ERR

用來報告錯誤情況; 設備驅動常常使用 KERN_ERR 來報告硬體故障.

KERN_WARNING

有問題的情況的警告, 這些情況自己不會引起系統的嚴重問題.

KERN_NOTICE

正常情況, 但是仍然值得注意. 在這個級別一些安全相關的情況會報告.

KERN_INFO

資訊型消息. 在這個級別, 很多驅動在啟動時列印它們發現的硬體的資訊.

KERN_DEBUG

用作調試消息.

每個字串( 在巨集定義擴展裏 )代表一個在角括弧中的整數,整數的範圍從 0 7,越小的數表示越大的優先順序

 

在編寫修改驅動程式時,printk就是個很好用的工具了。藉由列印在目標板上的資訊,可以知道那個函數是否有執行,設定或得到的參數是否想要的...等等

 

下圖是我所做的範例:

ex-printk.JPG

 

資料參考:

Linux Device Drivers 3


 

arrow
arrow
    全站熱搜

    flykof 發表在 痞客邦 留言(0) 人氣()