printk
--------------------------------------------------------------------------------
函数printk在Linux内核中定义,功能和标准C库中的函数printf类似。内核需要自己单独的打
印输出函数,这是因为它在运行时不能依赖于C库。模块能够调用printk是因为在insmod函数装
入模块后,模块就连接到了内核,因此可以访问内核的共用符号(包括函数和变量)。在printk
中可以使用如下的字符串来定义打印消息的优先级:
KERN_EMERG //用于紧急事件消息,他们一般是系统崩溃之前提示的消息
KERN_ALERT //用于需要立即采取动作的情况
KERN_CRIT //临界状态,通常涉及严重的硬件或软件操作失败
KERN_ERR //用于报告错误状态,设备驱动程序会经常使用KERN_ERR来报告来自硬件的问题。
KERN_WARNING //对可能出现问题的情况进行警告,但这类情况通常不会对系统造成严重问题。
KERN_NOTICE //有必要进行提示的正常情形,许多与安全相关的状况用这个级别进行汇报。
KERN_INFO //提示性信息,很多驱动程序在启动的时候以这个级别来打印他们找到的硬件信息。
KERN_DEBUG //用于调试信息。
这些字符串定义在kernel/include/linux/kernel.h中。
在printk中显式地指定优先级的原因在于:具有默认优先级的消息可能不会输出在控制台上。这
依赖于内核版本、klogd守护进程的版本以及具体的配置。
当然,也可以使用命令:
# dmesg -n7
来指定输出所有级别的打印信息。
ps: printk缺乏对浮点数的支持。
阅读(7066) | 评论(0) | 转发(1) |