免费注册 查看新帖 |

Chinaunix

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

printk的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-05 15:57 |只看该作者 |倒序浏览
不知道哪里看到 printk 不能在中断里面使用? 能说明一下原因吗??

我在中断处理函数里面使用 printk 好像也能正常运行, 这是什么原因呢???

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
2 [报告]
发表于 2009-03-05 16:19 |只看该作者

回复 #1 star316 的帖子

你是中断处理函数还是下半部?

论坛徽章:
0
3 [报告]
发表于 2009-03-05 18:46 |只看该作者
我就是在中断里面用的啊

static irqreturn_t handler(int irq,void * dev_id,struct pt_regs *regs)
{
printk("aaa");
return IRQ_HANDLED;
}

论坛徽章:
0
4 [报告]
发表于 2009-03-05 20:13 |只看该作者
在ldd第三章就说了,printk可以在任何地方使用,甚至在中断中。
因为printk只是向一个环形buffer写数据,并不会造成中断嵌套,或锁死。

论坛徽章:
0
5 [报告]
发表于 2009-03-06 11:45 |只看该作者
怪了,网上一些公司面试的题目里面还有说 PRINTK 不能用在中断里面呢?

论坛徽章:
5
6 [报告]
发表于 2009-03-06 11:52 |只看该作者
原帖由 star316 于 2009/3/6 11:45 发表
怪了,网上一些公司面试的题目里面还有说 PRINTK 不能用在中断里面呢?


不是严格禁用。只是printk会引入很大的时间(ms级)开销

论坛徽章:
0
7 [报告]
发表于 2009-03-09 08:52 |只看该作者
printk是否是不可重入函数?(在baidu没有查到是)

printf倒是不可重入函数。printf()经常有重入和性能上的问题.
如果信号处理函数中使用了不可重入函数,那么信号处理函数可能会修改原来进程中不应该被修改的数据,这样进程从信号处理函数中返回接着执行时,可能会出现不可预料的后果。不可再入函数在信号处理函数中被视为不安全函数。

奇怪,那么如何调试信号处理函数呢?用什么函数把打印信息输出到terminal呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP