printk的问题

发布于 2022-09-18 19:14:36 字数 90 浏览 10 评论 0

不知道哪里看到 printk 不能在中断里面使用? 能说明一下原因吗??

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

是伱的 2022-09-25 19:14:36

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

疯狂的代价 2022-09-25 19:14:36

我就是在中断里面用的啊

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

浅忆流年 2022-09-25 19:14:36

在ldd第三章就说了,printk可以在任何地方使用,甚至在中断中。
因为printk只是向一个环形buffer写数据,并不会造成中断嵌套,或锁死。

陌生 2022-09-25 19:14:36

怪了,网上一些公司面试的题目里面还有说 PRINTK 不能用在中断里面呢?

你在看孤独的风景 2022-09-25 19:14:36

原帖由 star316 于 2009/3/6 11:45 发表
怪了,网上一些公司面试的题目里面还有说 PRINTK 不能用在中断里面呢?

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

时光磨忆 2022-09-25 19:14:36

printk是否是不可重入函数?(在baidu没有查到是)

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

奇怪,那么如何调试信号处理函数呢?用什么函数把打印信息输出到terminal呢?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文