成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linus終于被勸動:用了30年的Linux內核C語言將升級

系統 Linux 后端
根據 Linux 內核郵件列表的消息,社區(qū)近日討論了是否要為內核采用現代 C 語言標準。

雖然 Linux 內核在快速發(fā)展,但它同時依賴著一些非常古老的工具,其中之一就是內核代碼仍在使用 1989 年版本的 C 語言標準——此標準在 30 多年前內核項目啟動之前就已經編寫完成。從討論結果來看,這一情況有望在 5.18 版本內核中改變。

Jakob Koschel 在向 Linus Torvalds 遞交的補丁 (https://lkml.org/lkml/2022/2/17/1032) 中修復了內核鏈表相關的預測執(zhí)行漏洞。

起因是 Jakob 發(fā)現了一個問題,Linux 內核廣泛使用由 struct list_head 定義的雙向鏈表:

struct list_head {

struct list_head *next, *prev;

};

這種結構體通常被嵌入到其他結構體中,通過這種方式,開發(fā)者可以使用任何感興趣的結構類型制作鏈表。除此之外,內核還提供了大量可用于遍歷和操作鏈表的函數和宏。其中之一是 list_for_each_entry(),這是一個偽裝成控制結構的宏。要了解如何使用此宏,請假設內核包含如下結構:

struct foo {

int fooness;

struct list_head list;

};

list 成員可用于創(chuàng)建 foo 結構體的雙向鏈表,假設我們有一個叫做 foo_list 的結構聲明作為此類鏈表的頭,使用以下代碼可以遍歷此列表:

struct foo *iterator;

list_for_each_entry(iterator, &foo_list, list) {

do_something_with(iterator);

}

/* Should not use iterator here */

list 參數告訴宏在 foo 結構中 list_head 結構體的名稱。此循環(huán)將為列表中的每個元素執(zhí)行一次,迭代器指向該元素。由此導致了 USB 子系統中的一個 bug:傳遞給該宏的迭代器在退出宏后還能被使用。

Koschel 通過重新編寫有問題的代碼,以在循環(huán)后停止使用迭代器來解決問題。

不過 Linus 卻對補丁修復的問題表示不解,也沒有看到它與預測執(zhí)行漏洞的關系。Koschel 對此進行了進一步解釋,對此 Linus 認為這只是一個普通的 bug。但不久之后 Linus 發(fā)現了問題的根源所在:傳遞給列表遍歷宏的迭代器,必須在循環(huán)本身之外的范圍內聲明。

隨后,Linus 認為也許可以采用更直接的修復如塊級變量聲明。但 C89 不支持,而 1999 年發(fā)布的 C99 標準支持。所以 Linux 內核也許是時候轉向使用 C99 標準了。

Linus 說到,內核代碼一直停留在 C89 的原因之一是編譯器 gcc 的舊版本會出現奇怪的問題,導致初始化程序被破壞。不過現在內核要求的 GCC 最低版本已經提高到了 v5.1,那些 bug 可能不再相關了。

另一位密切關注架構編譯器問題的內核開發(fā)者 Arnd Bergmann 提議直接升級到 C11 甚至 C2x,盡管他不確定 C11 是否會帶來任何對內核有用的新內容。不過如果升級到 C17 或 C2x,會破壞對 gcc-5/6/7 的支持,因此升級到 C11 更容易實現,而且跨越太大內核社區(qū)未必接受。

Linus 贊成了這個想法,在 Bergmann 確認應該可以這樣做之后,Linus 宣布將在下一個內核版本 v5.18 中嘗試使用 C11 標準。如果一切順利,下一個內核版本使用的 C 語言標準有望升級到 C11。

責任編輯:龐桂玉 來源: C語言與C++編程
相關推薦

2022-02-25 14:51:39

LinuxC語言Linux 內核

2022-08-26 09:02:57

代碼庫編程語言

2023-01-03 15:47:09

Linux內核C語言

2014-03-05 09:39:42

Linus TrovaLinux內核開發(fā)

2023-07-26 08:54:39

2021-09-21 16:48:36

LinuxTorvalds虛擬機

2021-07-29 20:29:36

Linux c 代碼Java

2021-12-27 10:54:06

Linus演講錄音錄音帶

2020-10-26 19:20:08

Linux國密算法加密

2022-02-25 14:13:28

LinuxC語言開發(fā)

2022-02-25 15:49:08

Linux開源社區(qū)C語言C11

2012-07-31 16:11:25

Linux內核系統運維

2013-04-08 16:19:46

Linux內核內核升級

2023-02-21 08:55:47

Linux操作系統

2024-01-02 14:12:03

LinuxAITorvalds

2025-04-11 09:37:31

2023-12-11 10:31:58

LinuxRustAI

2014-05-22 10:10:36

Linux內核Linus Torva

2010-03-02 16:13:56

Linux升級

2020-11-11 14:48:41

Linux內核代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本黄色一级视频 | 99国产精品久久久 | 免费日韩av网站 | 美女黄网 | 国产精品久久亚洲 | 精品国产免费一区二区三区演员表 | 日韩91 | 国产色网站 | 久久久久久久久久久久一区二区 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 免费小视频在线观看 | 狠狠干av | 国产精品久久久久久久久久了 | 北条麻妃99精品青青久久主播 | 午夜影院在线观看视频 | 麻豆精品久久久 | 精品福利一区二区三区 | 男人天堂av网站 | 亚洲精品国产a久久久久久 午夜影院网站 | 先锋资源网站 | 久久国产精品视频 | 成人在线视频观看 | 国产亚洲一区二区三区 | 欧美成人aaa级毛片在线视频 | 久久久精品影院 | 欧美日韩综合视频 | 日日夜夜精品免费视频 | 欧美aaa一级片 | 在线播放中文 | 九九国产在线观看 | 国产在线观看一区 | 免费激情av| 一区二区三区四区国产 | 国产日韩一区二区三区 | 精品日本久久久久久久久久 | 精品亚洲永久免费精品 | 免费一级黄色 | 欧美二区三区 | 亚洲精品无 | 91视频91| 亚洲一区二区精品视频 |