作為多線程的一部分一年來對 Linux 內核的 printk() 代碼進行徹底檢查的努力最近幾個月圍繞線程控制台打印做了很多工作,因此每個註冊的控制台都有一個內核線程,並且控制台打印將與 printk() 調用者分離。這項工作是針對 Linux 5.19 的,但後來由於麻煩而恢復。現在有一個新的實現在工作中。
由於早期和常規控制台功能之間缺少同步,該工作在 Linux 5.19 候選版本階段被恢復,並且在設計中顯示了其他可能的問題。由於 printk() 對 Linux 內核調試至關重要並且是一個根本性的重要功能,因此代碼被還原。
Thomas Gleixner 和 Intel 旗下的 Linutronix 在本週末發布了一組 29 個補丁,以“徵求意見”的旗號為特色,圍繞每個控制台線程重新設計了 printk() 代碼。
在與負責之前代碼的 John Ogness 一起解決後,這些 Linutronix 工程師希望新代碼的格式更好,更健壯。
除了性能方面的原因之外,在使用 Linux 6.0 之後,他們試圖為 RT 禁用控制台打印,這種按控制台線程打印的工作對於完成 Linux 內核上的實時 (RT) 工作也很重要內核,但隨後被 Linus Torvalds 拒絕。
如果對線程打印工作及其新功能感興趣,請查看此補丁系列有望應對這一挑戰的方法。鑑於它在這個重要代碼的“RFC”標誌下,並且 v6.1 合併窗口只有幾週的時間,這項工作很可能會拖到明年,進而至少在其餘代碼的主線化之前再進入另一個週期RT 內核啟用補丁。