Linux 为线程控制台打印获取补丁

多年来一直在努力彻底检查 Linux 内核的 printk() 代码,并且作为其中的一部分,最新的补丁系列提供线程控制台打印支持。

这种线程控制台打印支持正在实现早在 2019 年起草的计划,即为每个注册的控制台创建一个内核线程,并使控制台打印与 printk() 调用者完全分离。

大量参与 printk() 返工的 John Ogness 解释了这个线程控制台打印代码:

本系列为每个注册的控制台实现了一个 kthread。kthreads 从 printk ringbuffer 中无锁地检索记录,也不会导致彼此之间的任何锁争用。这允许控制台全速运行。例如,netconsole 能够比串行或 vt 控制台更快地转储记录。

Ogness 继续补充道,“在某些情况下,kthread 打印是不够的。例如,在 kthread 存在之前的早期引导期间或在恐慌情况下,kthread 可能没有机会调度。在这些情况下,当前的方法使用直接在 printk() 调用者上下文中打印。 ”

image.php_-49

这种最初形式的线程控制台打印支持只修改了不到一千行的 printk 代码。

原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun125777.html

(0)
打赏 微信扫一扫不于多少! 微信扫一扫不于多少! 支付宝扫一扫礼轻情意重 支付宝扫一扫礼轻情意重
上一篇 2022年2月8日 上午8:15
下一篇 2022年2月8日 下午1:49

相关推荐