Linux-Kernel

linux 核心是否對其“公共 API”進行了不兼容的更改?

  • September 4, 2022

我正在嘗試了解語義版本控制,它指出當發生不兼容的“公共 API”更改時應該增加主要版本號。我的思想實驗是試圖了解 linux 核心編號的位置,因為據我所知,主要版本的顛簸是任意的。

我不熟悉 Linux 內部結構,所以請多多包涵。據我了解,這個“公共 API”將是一組 C 系統呼叫,例如sys_writeand sys_mmap,而不是用於確定二進制兼容性的 ABI。從syscall_64.tbl這包括大約 400 個系統呼叫,其中一些已被棄用。或者 API 會是這裡作為核心 API列出的所有內容嗎?

假設系統呼叫定義,Linux 是否曾引入向後不兼容的系統呼叫介面更改?如果是這樣,主要版本號是數百還是數千?

為了清楚起見,值得一提的是核心不遵循語義版本控制;正如你所說,主要的顛簸是任意的。

就係統呼叫而言,出現了不兼容的變化,即移除;手冊頁列出syscalls已刪除的過時呼叫。僅此一項就足以要求非 1。x版本號(如果應用了語義版本控制規則)。

核心 API,或者更確切地說,必須保留在核心中的東西,是任何在更改時可能會破壞程序的東西。這包括系統呼叫定義,還包括資料結構、/proc文件名和內容、ioctl呼叫,甚至系統行為。確實會發生核心 API 被更改的情況,通常是無意的,並且這些更改通常會被還原(因此會被處理為錯過的主要顛簸,然後是語義版本控制中的修復)。

引用自:https://unix.stackexchange.com/questions/716048