【发布时间】:2017-11-17 00:41:24
【问题描述】:
我需要在 Irq 服务例程中向内核日志打印一条消息,因此它位于“中断上下文”中。我知道在这种情况下不建议使用 printk,那么这里最好的选择是什么? 感谢您的任何建议。
我听说有一个关于 printk_deferred 的选项,我注意到这是在调度程序中使用的,但还没有找到它在 irq isr 中的使用位置。谁能解释一下 printk_deferred 和 printk 有什么区别?
【问题讨论】:
-
让我们从您希望记录的中断开始?如果该中断在一秒钟内产生几千次怎么办?你真的想记录每一个动作吗?嗯...恕我直言,我会按照实际推荐的那样使用 tasklet、softirq 或 workqueue 创建一个推迟的操作。看看任何有
request_irq例程的驱动程序,应该有一个 IRQ 处理程序,因为它不直接调用服务函数。 -
感谢您的评论,@0xDen 中断每 20 毫秒产生一次,有一定的条件检查来打印消息,假设打印消息大约每 10 分钟发生一次。
标签: linux-kernel linux-device-driver