核心通過 printk
() 輸出的資訊具有日誌級別,日誌級別是通過在 printk
() 輸出的字串前加乙個帶尖括號的整數來控制的,如 printk
("<6>hello, world!/n"
);。核心中共提供了八種不同的日誌級別,在 linux/kernel.h 中有相應的巨集對應。
#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 */
#define kern_info "<6>"
/* informational */
#define kern_debug "<7>"
/* debug-level messages */
所以 printk
() 可以這樣用:printk
(kern_info "hello, world!/n");。
未指定日誌級別的 printk
() 採用的預設級別是 default_message_loglevel,這個巨集在 kernel/printk.c 中被定義為整數 4,即對應kern_warning。
在 /proc/sys/kernel/printk 會顯示4個數值(可由 echo 修改),分別表示當前控制台日誌級別、未明確指定日誌級別的預設訊息日誌級別、最小(最高)允許設定的控制台日誌級別、引導時預設的日誌級別。當 printk
() 中的訊息日誌級別小於當前控制台日誌級別時,printk 的資訊(要有/n符)就會在控制台上顯示。但無論當前控制台日誌級別是何值,通過 /proc/kmsg (或使用dmesg)總能檢視。另外如果配置好並執行了 syslogd 或 klogd,沒有在控制台上顯示的 printk 的資訊也會追加到 /var/log/messages.log 中。
char myname=
"chinacodec/n"
;printk
(kern_info "hello, world %s!/n"
, myname);
可用的格式字元
----
----
----
----
----
----
----
----
----
----
----
----
----
----
-int
%d or %x
unsigned
int%u or %x
long
%ld or %lx
unsigned
long
%lu or %lx
long
long
%lld or %llx
unsigned
long
long
%llu or %llx
size_t %zu or %zx
ssize_t %zd or %zx
u64 should be printed with %llu/
%llx,
(unsigned
long
long):
printk
("%llu",(
unsigned
long
long
)u64_var)
;s64 should be printed with %lld/
%llx,
(long
long):
printk
("%lld",(
long
long
)s64_var)
;可參考
列印裸指標(raw pointer)用 %p,
%p除了可以用來列印指標外還可以列印其它的資訊
%pf可列印函式指標的函式名和偏移位址,%pf只列印函式指標的函式名,不列印偏移位址。
如printk
("%pf %pf\n"
, ptr, ptr) will print:
module_start module_start+
0x0/
0x62
[hello]
但是為了支援這個功能你需要開啟config_kallsyms 選項
%pm列印冒號分隔的mac位址,%pm列印mac位址的16進製制無分隔
如printk
("%pm %pm\n"
, mac, mac) will print:
2c:00
:1d:00:
1b:00
2c001d001b00
%i4列印無前導0的ipv4位址,%i4列印冒號分隔的ipv4位址
%i4列印無前導0的ipv6位址,%i6列印無冒號分隔的ipv6位址
如printk
("%pi4 %pi4\n"
, ip, ip) will print:
127.0
.0.1
127.000
.000
.001
其它的特殊格式字元參見
參考http:
2010
/printk-format-specifiers/
SlickEdit 一些使用技巧
slickedit 使用了幾天以後,發現不僅僅是自動提示,瀏覽,它提供的編輯功能也非常強大。如果說 sourceinsight 和 slickedit 在瀏覽 上面各有所長,那麼編輯這方面 se 和 si 就不是乙個級別了。下面是我知道的一些使用技巧,老鳥就不用看了,哈哈.1.如果發現路徑的 顯示成...
mysql 一些使用技巧
1.忘記root密碼,解決辦法 usr local mysql share mysql mysql.server stop mysql4 usr local mysql support files mysql.server stop mysql5 usr local mysql bin mysqld...
latex一些使用技巧
1.如何使連續的參考文獻能夠中間用破折號連起來?比如 6,7,8,9 變成 6 9 方法 在文件開始前加上下面的語句命令 usepackage numbers,sort compress 不但可以壓縮參考文獻標號,還可以進行排序,即無論正文裡面的順序怎樣,顯示出來都是先後順序。在elsevier模板...