有时候看代码明明已经用了printk但是在加载进kernel的时候却不能打印出来信息,而自己用printk(“xxx”)却可以打印出来。why?
仔细对比发现,不能打印的printk()调用方式与能打印的printk()有区别,前者一般是printk(KERN_DEBUG msg);这样调用的,其中KERN_DEBUG表示输出的级别,很明显,没有打印出来是因为设置的级别不够,默认的kernel是设置为4的,而KERN_DEBUG是7的,通过
cat 7 /proc/sys/kernel/pritnk
可以修改printk的级别。
具体的可以从源码中看到 include/linux/printk.h
或是make menuconfig的时候从kernel hacking中看到log级别。
附上:
-
#defineKERN_EMERG""/*紧急事件消息,系统崩溃之前提示,表示系统不可用*/
-
#defineKERN_ALERT""/*报告消息,表示必须立即采取措施*/
-
#defineKERN_CRIT""/*临界条件,通常涉及严重的硬件或软件操作失败*/
-
#defineKERN_ERR""/*错误条件,驱动程序常用KERN_ERR来报告硬件的错误*/
-
#defineKERN_WARNING""/*警告条件,对可能出现问题的情况进行警告*/
-
#defineKERN_NOTICE""/*正常但又重要的条件,用于提醒。常用于与安全相关的消息*/
-
#defineKERN_INFO""/*提示信息,如驱动程序启动时,打印硬件信息*/
-
#defineKERN_DEBUG""/*调试级别的消息*/
阅读(7170) | 评论(0) | 转发(0) |