Linux ABI 描述

介紹

Documentation/ABI 目錄中的這部分文件嘗試記錄 Linux 核心和使用者空間之間的 ABI,以及這些介面的相對穩定性。由於 Linux 的不斷變化和不同的成熟度級別,使用者空間程式應該以不同的方式使用這些介面。

我們有四個不同級別的 ABI 穩定性,如本位置中的四個不同的子目錄所示。介面可以根據下述規則更改穩定性級別。

不同的穩定性級別是

stable/

此目錄記錄了開發者已定義為穩定的介面。使用者空間程式可以自由使用這些介面,沒有任何限制,並且至少保證 2 年的向後相容性。大多數介面(如系統呼叫)預計永遠不會改變並且始終可用。

testing/

此目錄記錄了被認為是穩定的介面,因為該介面的主要開發已經完成。可以更改介面以新增新功能,但除非在其中發現嚴重錯誤或安全問題,否則當前介面不會因此而中斷。使用者空間程式可以開始依賴這些介面,但它們必須意識到在這些介面被標記為穩定之前可能發生的更改。強烈建議使用這些介面的程式將其名稱新增到這些介面的描述中,以便核心開發者可以在發生任何更改時輕鬆通知他們(有關如何執行此操作的詳細資訊,請參閱下面檔案的佈局描述。)

obsolete/

此目錄記錄了核心中仍然存在的介面,但標記為在稍後的某個時間點刪除。介面的描述將記錄它過時的原因以及何時可以預期刪除。

removed/

此目錄包含已從核心中刪除的舊介面列表。

這些目錄中的每個檔案都將包含以下資訊

What:

介面的簡短描述

Date:

建立日期

KernelVersion:

此功能首次出現的核心版本。

Contact:

此介面的主要聯絡人(可能是郵件列表)

Description:

介面的詳細描述以及如何使用它。

Users:

希望在介面更改時收到通知的此介面的所有使用者。這對於“測試”階段的介面非常重要,以便核心開發者可以與使用者空間開發者合作,以確保不會以不可接受的方式中斷。獲取這些介面的反饋也很重要,以確保它們以適當的方式工作,並且不需要進一步更改。

Note

這些欄位應該使用簡單的表示法,與 ReST 標記相容。此外,該檔案**不應**具有頂級索引,例如

===
foo
===

事物如何在級別之間移動

穩定狀態下的介面可能會移動到過時狀態,只要給出適當的通知即可。

只要記錄的時間已經過去,就可以從過時狀態和核心中刪除介面。

當開發者認為測試狀態下的介面已完成時,它們可以移動到穩定狀態。如果沒有先經過過時狀態,則無法從核心樹中刪除它們。

由開發者來決定將其介面置於他們希望開始的類別中。

非 ABI 的值得注意的部分,在任何情況下都不應被認為是穩定的

  • Kconfig。使用者空間不應依賴於任何特定 Kconfig 符號的存在或不存在,無論是在 /proc/config.gz 中,還是在通常安裝到 /boot 的 .config 副本中,或者在核心構建過程的任何呼叫中。

  • 核心內部符號。不要依賴於任何核心符號的存在、不存在、位置或型別,無論是在 System.map 檔案中還是核心二進位制檔案本身中。請參閱 Linux 核心驅動介面

ABI 符號

ABI 檔案