當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 嵌入式微處理器
[導(dǎo)讀]自 2020 年 1 月發(fā)布 5.5 內(nèi)核之后,到現(xiàn)在已經(jīng)有近 87,000 個(gè) patch,來(lái)自于近 4600 名開(kāi)發(fā)者,都被合并到 mainline 倉(cāng)庫(kù)中了。


自 2020 年 1 月發(fā)布 5.5 內(nèi)核之后,到現(xiàn)在已經(jīng)有近 87,000 個(gè) patch,來(lái)自于近 4600 名開(kāi)發(fā)者,都被合并到 mainline 倉(cāng)庫(kù)中了。review 所有這些 patch 的工作,對(duì)于愿意花時(shí)間的內(nèi)核開(kāi)發(fā)者來(lái)說(shuō)也都是一項(xiàng)艱巨的任務(wù),所以是否要接受合并 patch,這個(gè)決定權(quán)就被委托給了各個(gè)子系統(tǒng)的維護(hù)者(maintainer)來(lái)代理決定,他們每個(gè)人都對(duì)內(nèi)核中這一部分的改動(dòng)具有部分或者完整的決定權(quán)。這些維護(hù)者們就被記錄在一個(gè)叫 MAINTAINERS 的文件中(當(dāng)然是這個(gè)名字)。但是,MAINTAINERS 文件也需要維護(hù),它能很好地反映現(xiàn)實(shí)情況嗎? MAINTAINERS 文件的存在目的,并不僅僅是為了讓大家給維護(hù)者點(diǎn)贊。開(kāi)發(fā)者們需要用它來(lái)確定該把 patch 發(fā)到哪里。get_maintainer.pl 腳本通過(guò)查看這個(gè) patch 修改了的文件,就可以生成一系列郵件地址來(lái)發(fā)送 patch,從而讓這一過(guò)程變得更加自動(dòng)化。如果這個(gè)文件中有錯(cuò)誤信息的話,就可能會(huì)讓 patch 發(fā)送到錯(cuò)誤的地方去,所以我們需要這個(gè)文件能保持更新。最近,編者收到 Jakub Kicinski 的建議,他認(rèn)為可以比較 一下 MAINTAINERS 中的各個(gè)條目和現(xiàn)實(shí)世界中的工作的吻合程度,應(yīng)該能得到一些線索。于是折騰了一會(huì)兒 Python 之后,我們就得到了一個(gè)新的分析腳本。

Digging into MAINTAINERS

統(tǒng)計(jì)下來(lái),MAINTAINERS 文件中已經(jīng)列出了 2280 個(gè) "subsystems (子系統(tǒng))"。每一個(gè)子系統(tǒng)都包括一個(gè)它所涵蓋的文件和目錄列表。我們可以查看這些文件的 commit 信息來(lái)這個(gè)子系統(tǒng)中都有誰(shuí)在進(jìn)行工作。撰寫(xiě) patch 顯然屬于工作內(nèi)容之一,但其他活動(dòng)也得算,比如處理 patch (可以從 Signed-off-by tag 來(lái)得到這個(gè)信息) 或 review patch (根據(jù) Reviewed-by 或 Acked-by)。我們犧牲了一些 CPU 挖礦的時(shí)間,得到了一個(gè)大概統(tǒng)計(jì)值,也就是各個(gè)子系統(tǒng)中明確列出的維護(hù)者最后一次在該子系統(tǒng)中實(shí)際做了有效工作的時(shí)間是什么時(shí)候。 對(duì)于那些想看細(xì)節(jié)的人來(lái)說(shuō),可以直接看這個(gè)完整結(jié)果(https://lwn.net/Articles/842419/)。 不過(guò),我們可以縮小數(shù)據(jù)范圍,在這個(gè)文件中挑選出一些我們更感興趣的內(nèi)容。例如,有 367 個(gè)子系統(tǒng)在整個(gè) Git 歷史中都沒(méi)有維護(hù)者,或維護(hù)者從未出現(xiàn)過(guò)(沒(méi)有包括那些沒(méi)有文件的 "子系統(tǒng)"–見(jiàn)下文)。在這些子系統(tǒng)中,很多已經(jīng)過(guò)了它本身的黃金時(shí)期,比如現(xiàn)在 3c59x 網(wǎng)卡維護(hù)者根本沒(méi)有多少工作可做。網(wǎng)絡(luò)開(kāi)發(fā)人員也不會(huì)收到很多 ATM 的 patch 了,Palm Treo 也不需要有多少支持工作了,蘋(píng)果最近也很少發(fā)布基于 M68k 的系統(tǒng)了,Arm 軟驅(qū)(floppy drive)也沒(méi)有多少人還在使用了,S3 Savage 顯卡也不再是以前人們所必備的設(shè)備了。這幾百項(xiàng)中,很多可能都代表著可以完全刪除的代碼。 類似的結(jié)論也可以從另一個(gè)列表中得到 (https://lwn.net/Articles/842424/),那個(gè)列表中都是沒(méi)有列出維護(hù)者的子系統(tǒng)。當(dāng)然,其中一些子系統(tǒng)本身也不太對(duì)頭,有一個(gè)子系統(tǒng)簡(jiǎn)單地命名為 "ABI/API",指向了 linux-api 郵件列表。實(shí)際上有一個(gè)文件是與這個(gè) "子系統(tǒng) " 相關(guān)的,kernel/sys_ni.c,這個(gè)文件會(huì)對(duì)那些未實(shí)現(xiàn)的系統(tǒng)調(diào)用進(jìn)行處理。因此,這個(gè)條目的存在價(jià)值,是為了讓開(kāi)發(fā)者在添加新的系統(tǒng)調(diào)用時(shí)會(huì)抄送 linux-api 郵件列表。"Arm subarchitectures " 條目也是類似情況。 一些無(wú)維護(hù)者的子系統(tǒng),比如 framebuffer 層,可能后續(xù)會(huì)有人愿意接手從而復(fù)活。reiserfs 文件系統(tǒng)缺乏維護(hù)者,但似乎仍有一些用戶。其他的子系統(tǒng),比如 DECnet 或 Matrox framebuffer,可能最好的處理就是不去管它了(或干脆刪除掉)。 MAINTAINERS 文件中列出的一些 "子系統(tǒng)" 沒(méi)有任何文件需要修改。一個(gè)有趣的例子是 "embedded Linux",據(jù)說(shuō)由 Paul Gortmaker、Matt Mackall 和 David Woodhouse 維護(hù)。鑒于嵌入式 Linux 的成功,我們都認(rèn)為他們的工作非常出色。"device number registry" 聲稱是有維護(hù)的,但這里只包含一個(gè)鏈接,指向一個(gè)不存在的網(wǎng)頁(yè)。"disk geometry and partition handling" 這一條中的 URL 仍然有效,但這些網(wǎng)頁(yè)似乎已經(jīng)有十多年沒(méi)有更新了,可以看出最近 Zip 驅(qū)動(dòng)器的 geometry 并沒(méi)有什么進(jìn)展。man page 這些手冊(cè)頁(yè)面倒是有積極維護(hù)的,但它們不在內(nèi)核代碼樹(shù)中。

Help needed

從目前的結(jié)果可以得出幾個(gè)結(jié)論。一個(gè)是很多內(nèi)核子系統(tǒng)現(xiàn)在并不是真的需要有人來(lái)維護(hù),相反,其中一些可能需要被刪除掉。另一個(gè)結(jié)論是,也許 MAINTAINERS 文件本身需要清理一下。但還有一個(gè)有價(jià)值的問(wèn)題,那就是從這些數(shù)據(jù)是否可以看出是否有一些子系統(tǒng)從新的維護(hù)者中獲益匪淺的呢?為了回答這個(gè)問(wèn)題,我們又花費(fèi)了一些本來(lái)可以用來(lái)挖礦的 CPU 時(shí)間,來(lái)尋找符合這些標(biāo)準(zhǔn)的子系統(tǒng)。
  • 沒(méi)有列出維護(hù)者,或者所謂的維護(hù)者已經(jīng)在該子系統(tǒng)中至少 6 個(gè)月沒(méi)有活動(dòng)了。
  • 自 2020 年 1 月發(fā)布 5.5 內(nèi)核以來(lái),至少有 50 個(gè)提交跟這個(gè)子系統(tǒng)有關(guān)。
這個(gè)搜索的目的是找出那些仍在進(jìn)行某種活躍開(kāi)發(fā),但沒(méi)有活躍的、明確指定的子系統(tǒng)。搜索結(jié)果可以分為幾類。 有些 MAINTAINERS 的條目中包含了大量的文件,使得 commit 數(shù)量看起來(lái)比真實(shí)情況要多了不少。例如,名為 "ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API "的子系統(tǒng)跟 drivers/dma 下的所有文件都有關(guān),"DMA GENERIC OFFLOAD ENGINE SUBSYSTEM" 也包含這些文件。該子系統(tǒng)則由 Vinod Koul 積極維護(hù)。有兩個(gè)子系統(tǒng)屬于這一類,在下面的表格中,"Activity" 列表示維護(hù)者最后一次我們看到他的活動(dòng)時(shí)間(如果有的話),而 "Commits" 則顯示了自 5.5 以來(lái)影響到這個(gè)子系統(tǒng)的 commit 次數(shù)。 Subsystem Activity Commits



ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API —— 536
HISILICON NETWORK SUBSYSTEM DRIVER 2019-11-16 258
這些子系統(tǒng)或者不是一個(gè)單獨(dú)的實(shí)體(entity),或者應(yīng)該減少其覆蓋的文件清單,要以符合現(xiàn)實(shí)情況。 還有一些子系統(tǒng)的維護(hù)者使用的是公司電子郵件別名。比如 "DIALOG SEMICONDUCTOR DRIVERS" 的維護(hù)者是 support.opensource@diasemi.com,這個(gè)地址顯然不會(huì)出現(xiàn)在任何實(shí)際的 patch commit 中。不過(guò)在該子系統(tǒng)內(nèi)看進(jìn)去的話,可以看到許多來(lái)自 diasemi.com 郵件地址的許多 review,所以該子系統(tǒng)不能說(shuō)是真的沒(méi)人維護(hù)。這個(gè)類別包含: Subsystem Activity Commits



DIALOG SEMICONDUCTOR DRIVERS —— 120
QUALCOMM ATHEROS ATH9K WIRELESS DRIVER —— 65
WOLFSON MICROELECTRONICS DRIVERS —— 146
與之相關(guān)的是有些子系統(tǒng)的維護(hù)者信息是過(guò)時(shí)的,指定的維護(hù)者并不活躍,但往往是來(lái)自同一公司的其他人接替了他的工作,并承擔(dān)事實(shí)上的維護(hù)工作。這些包括: Subsystem Activity Commits



HISILICON NETWORK SUBSYSTEM 3 DRIVER (HNS3) 2019-11-16 234
HISILICON SECURITY ENGINE V2 DRIVER (SEC2) 2020-06-18 55
LINUX FOR POWER MACINTOSH 2018-10-19 71
MELLANOX ETHERNET INNOVA DRIVERS —— 93
MELLANOX MLX4 IB driver —— 70
OMAP HWMOD DATA 2016-06-10 102
QCOM AUDIO (ASoC) DRIVERS 2018-05-21 125
TEGRA I2C DRIVER 2018-05-30 56
最后,還有一些子系統(tǒng)似乎真的缺少維護(hù)者,它們通常的 commit 是由其他的子系統(tǒng)維護(hù)者來(lái)合并,或者是通過(guò)少數(shù)幾個(gè)終極維護(hù)者來(lái)最終合入的。它們是: Subsystem Activity Commits



ARM/UNIPHIER ARCHITECTURE —— 73
DRBD DRIVER 2018-12-20 51
FRAMEBUFFER LAYER —— 402
HMM - Heterogeneous Memory Management 2020-05-19 54
I2C SUBSYSTEM HOST DRIVERS —— 434
MARVELL MVNETA ETHERNET DRIVER 2018-11-23 65
MEDIA DRIVERS FOR RENESAS - VIN 2019-10-10 56
MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER 2020-06-24 54
NFC SUBSYSTEM —— 72
PROC FILESYSTEM —— 171
PROC SYSCTL 2020-06-08 51
QLOGIC QLGE 10Gb ETHERNET DRIVER 2019-10-04 77
STAGING - REALTEK RTL8188EU DRIVERS 2020-07-15 121
STMMAC ETHERNET DRIVER 2020-05-01 174
UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER —— 277
USB NETWORKING DRIVERS —— 119
X86 PLATFORM DRIVERS - ARCH —— 119
對(duì)于一直關(guān)注相關(guān)領(lǐng)域的人來(lái)說(shuō),上面的列表并不出乎預(yù)料。frameebuffer 子系統(tǒng)是一個(gè)已知有問(wèn)題的領(lǐng)域,由于缺乏維護(hù),"soft scrollback" 功能最近就被從 framebuffer 驅(qū)動(dòng)中移除了。不少人仍然需要使用這段代碼,但它越來(lái)越難以與內(nèi)核的圖形驅(qū)動(dòng)集成起來(lái)使用,很少有人有興趣去深入研究它。 事實(shí)上,I2C host driver 確實(shí)有一個(gè)事實(shí)上的維護(hù)者,它就是 Wolfram Sang,他也維護(hù)著 core I2C 子系統(tǒng)。他一直希望有人能幫助他維護(hù)這些驅(qū)動(dòng)程序,但似乎沒(méi)有人愿意幫助他,所以他在有時(shí)間的時(shí)候就也負(fù)責(zé)維護(hù)這些驅(qū)動(dòng)程序。/proc 是一個(gè)有趣的例子,每個(gè)人都依賴它,但沒(méi)有人負(fù)責(zé)維護(hù)它。HMM 也很有趣,創(chuàng)建者當(dāng)初花了很多精力來(lái)把 HMM 功能合入 mainline,但現(xiàn)在似乎轉(zhuǎn)向去忙其他事情了。 以上這些地方,看起來(lái)都是有抱負(fù)的內(nèi)核開(kāi)發(fā)者可以參與進(jìn)來(lái)提供幫助的地方。 那么那些在 MAINTAINERS 文件中沒(méi)有記錄的子系統(tǒng)呢?如果我們用快速腳本來(lái)查找一下內(nèi)核樹(shù)中所有的未被 MAINTAINERS 文件包含的文件,我們得到的文件列表包含超過(guò) 2800 個(gè)文件。其中自然包括 MAINTAINERS 文件本身。其余的絕大多數(shù)都是 include/下的頭文件,其中大部分可能都有維護(hù)者,應(yīng)該添加到 MAINTAINER 文件中相應(yīng)的條目下。不過(guò)令人沮喪的是,在 kernel/目錄下有 72 個(gè)文件沒(méi)有列出維護(hù)者。這當(dāng)然不是現(xiàn)實(shí)情況。SYSV IPC 代碼是沒(méi)有維護(hù)者的,這反映了它普遍不受歡迎。其余大部分未維護(hù)的文件都在 tools/ 或 samples/ 目錄下。 比較難找出來(lái)的是 MAINTAINERS 中號(hào)稱會(huì)包含的文件中,其實(shí)有一些并不是由指定的人維護(hù)的。這種情況經(jīng)常出現(xiàn)在那些指定包含整個(gè)目錄樹(shù)的條目中。例如,編者被列為需要處理 Documentation/目錄,但肯定不能說(shuō)我真的是在 "維護(hù)" 這么多文件。類似的情況在內(nèi)核樹(shù)中很多地方都有。 如果有人希望從這些數(shù)據(jù)中得出一些整體性的結(jié)論,那么可能會(huì)是這些:MAINTAINERS 文件肯定有一些黑暗的角落,這些角落本身也可能需要一些維護(hù)(其中一些已經(jīng)在做了)。內(nèi)核中一些缺乏維護(hù)者的部分,仍然是可以使用的,而另一些則已經(jīng)過(guò)于古老都不需要維護(hù)了。不過(guò),大多數(shù)情況下,內(nèi)核中的子系統(tǒng)都有指定的維護(hù)者,而且他們中的大多數(shù)人至少都在努力維護(hù)他們負(fù)責(zé)的代碼。The situation could be a lot worse。 [和往常一樣,生成上述表格的腳本可以在 gitdm 倉(cāng)庫(kù)中找到,網(wǎng)址是 git://git.lwn.net/gitdm.git] 。
END

By Jonathan Corbet
January 14, 2021
DeepL assisted translation
https://lwn.net/Articles/842415/

版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除。

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

嵌入式ARM

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉