printk函数详解

来源:互联网 发布:知茵女装网上有卖吗 编辑:程序博客网 时间:2024/05/21 12:50

综述:printk 允许你根据消息的严重程度对其分类, 通过附加不同的记录级别或者优先级在消息上. 常常用一个宏定义来指示记录级别.

例子:2 个 printk 命令, 一个调试消息, 一个紧急消息:

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 语句缺省是 DEFAULT_MESSAGE_LOGLEVEL, 在 kernel/printk.c 里指定作为一个整数. 在 2.6.10 内核中, DEFAULT_MESSAGE_LOGLEVEL 是 KERN_WARNING, 但是在过去已知是改变的.



原创粉丝点击