免费注册 查看新帖 |

Chinaunix

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

printk()的效率问题-求助! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-03 11:24 |只看该作者 |倒序浏览
我写了一个驱动模块,在模块内部设置了一个宏调试开关,代码如下:
#define EP93_TEST_DEBUG                /*debugging         mode*/
#undef TEST_DBG_PRINT         /* undef it, just in case */

#ifdef EP93_TEST_DEBUG
        /* This one if debugging is on, and kernel space */
        #define TEST_DBG_PRINT(fmt, args...) printk( KERN_INFO "EP93-TEST: " fmt, ## args)
#else
        #define TEST_DBG_PRINT(fmt, args...)        /* not debugging: nothing */
#endif

这样编译后运行,我通过一个应用层的测试程序,测试该模块的读功能,但是,我在该驱动模块中的读函数内部没有做任何工作,此时问题出现了:应用层的read函数的执行时间大概有13毫秒;而如果我把前面的“#define EP93_TEST_DEBUG”改为“#undef EP93_TEST_DEBUG”后,同样的测试程序,read的执行只需要几十个微秒。请教高手,这是什么原因,TEST_DBG_PRINT宏函数为什么对这个模块的执行效率有如此大的影响?谢谢!

论坛徽章:
0
2 [报告]
发表于 2006-07-03 16:03 |只看该作者
printk要写磁盘,会慢的

论坛徽章:
0
3 [报告]
发表于 2006-07-03 16:18 |只看该作者
现在的问题是在驱动内部,也就是在驱动的read函数中,没有调用TEST_DBG_PRINT,也就是程序进入read后就直接返回0。

论坛徽章:
0
4 [报告]
发表于 2006-07-04 14:44 |只看该作者
你在内核里面调用printk当然会极大的影响性能,这个还用说。所以一般情况下,都是自己封装一个print函数,每隔多长时间打印一次。、
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP