Chinaunix首页 | 论坛 | 博客
  • 博客访问: 593331
  • 博文数量: 88
  • 博客积分: 4769
  • 博客等级: 中校
  • 技术积分: 989
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-24 02:31
文章分类

全部博文(88)

文章存档

2012年(4)

2011年(35)

2010年(49)

分类: LINUX

2011-05-03 23:09:21

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) |
给主人留下些什么吧!~~