SunBo

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年1月6日

摘要: 转自:http://blog.chinaunix.net/u3/112940/showart_2450064.html 由于前两天在看netconsole的源码实现中,发现其跟printk的实现机制相关,加之之前一直是很普通的使用printk,从不清楚printk到底是怎样工作的,因此就趁这个机会把printk的实现代码也给大致看了一下,代码流程并不复杂,下面就简要说明一下。 printk在内核中的实现代码如下。 asmlinkage int printk(const char *fmt, ...) { va_list args; int r; /*将fmt后的参数信息保存到args中*/ v 阅读全文
posted @ 2011-01-06 09:35 SunBo 阅读(4024) 评论(0) 推荐(0) 编辑

摘要: 内核通过 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 * 阅读全文
posted @ 2011-01-06 09:34 SunBo 阅读(852) 评论(0) 推荐(0) 编辑