gpt4 book ai didi

c - 中断处理程序中的 printk,真的那么糟糕吗?

转载 作者:太空狗 更新时间:2023-10-29 16:37:45 26 4
gpt4 key购买 nike

大家都知道中断处理程序应该越短越好。并且在中断处理程序中添加像 printk 这样的函数来进行调试是不应该做的。实际上,我之前在为我编写的中断驱动的字符设备调试 linux 内核时尝试过它,它破坏了驱动程序的时序。

我的问题是,为什么会这样?printk 函数被缓冲了!这意味着,据我所知,数据已插入到队列中,并且稍后会对其进行处理,很可能是在中断处理程序完成之后。

那么为什么它不起作用呢?

最佳答案

printk 函数不仅仅是插入队列/缓冲区——假设日志级别足够高,printk 的输出将立即发送到控制台,作为调用 printk 的一部分。如果控制台在串行端口上,这会特别慢。但无论如何,printk 确实引入了相当大的开销并且会影响时序。

如果您在时间关键的地方想要获得一些调试输出,您可以考虑在现代内核中使用 trace_printk 函数。这实际上只是将输入放入跟踪环形缓冲区,您可以稍后阅读。看看this article了解全部详情。

关于c - 中断处理程序中的 printk,真的那么糟糕吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8738951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com