免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1082 | 回复: 0
打印 上一主题 下一主题

printk 使用方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-15 11:14 |只看该作者 |倒序浏览

今天准备写一个小驱动,驱动加载成功了,但是有问题。不知道怎么调试,就只能在驱动里面添加打印了,看到驱动里面的打印都是用的printk,于是到网上查了一下他的用法:
来自:http://blog.csdn.net/chinacodec/archive/2009/02/20/3913154.aspx
内核通过 printk() 输出的信息具有日志级别,日志级别是通过在 printk() 输出的字符串前加一个带尖括号的整数来控制的,如
printk("Hello, world!\n");。内核中共提供了八种不同的日志级别,在 linux/kernel.h
中有相应的宏对应。
#define KERN_EMERG    ""    /* system is unusable */
#define KERN_ALERT    ""    /* action must be taken immediately */
#define KERN_CRIT     ""    /* critical conditions */
#define KERN_ERR      ""    /* error conditions */
#define KERN_WARNING  ""    /* warning conditions */
#define KERN_NOTICE   ""    /* normal but significant */
#define KERN_INFO     ""    /* informational */
#define KERN_DEBUG    ""    /* debug-level messages */
所以 printk() 可以这样用:printk(KERN_INFO "Hello, world!\n");。
未指定日志级别的 printk() 采用的默认级别是 DEFAULT_MESSAGE_LOGLEVEL,这个宏在 kernel/printk.c 中被定义为整数 4,即对应KERN_WARNING。

/proc/sys/kernel/printk 会显示4个数值(可由 echo
修改),分别表示当前控制台日志级别、未明确指定日志级别的默认消息日志级别、最小(最高)允许设置的控制台日志级别、引导时默认的日志级别。当
printk() 中的消息日志级别小于当前控制台日志级别时,printk
的信息(要有\n符)就会在控制台上显示。但无论当前控制台日志级别是何值,通过 /proc/kmsg
(或使用dmesg)总能查看。另外如果配置好并运行了 syslogd 或 klogd,没有在控制台上显示的 printk 的信息也会追加到
/var/log/messages.log 中。
char myname[] = "chinacodec\n";
printk(KERN_INFO "Hello, world %s!\n", myname);
我用同样的方法在ioctl中打印了,但是没有输出!55~~~~~,哪个地方错了呢?
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104425/showart_2070807.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP