2009年11月5日

Printk 是啥玩意?

引用網誌:
http://flykof.pixnet.net/blog/post/22792127

在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



沒有留言:

張貼留言

新電腦上重新安裝 Windows 10

想要在電腦上安裝 Windows 10 嗎? 若要開始使用,您首先必須取得安裝 Windows 10 的授權。然後才可以下載並執行媒體建立工具。如需工具使用方式的詳細資訊,請參閱下列指示。 https://www.microsoft.com/zh-tw/software-...