Linux-Kernel

ENOANO(無陽極)的用途是什麼?

  • October 2, 2017

這個問題只是出於好奇,但我懷疑其他人也會很好奇。通過 errno.h(Linux 2.6)搜尋,我發現 ENOANO “無陽極”。沒有“無陰極”錯誤的跡象。查看核心原始碼索引,它似乎沒有被稱為陽極的設備使用,只是一些晦澀的設備驅動程序故意將其作為一個古怪的錯誤程式碼。Google搜尋沒有發現任何有趣的東西。

也許是個玩笑?它是否在諸如 POSIX 之類的標准文件中定義,但沒有用?

ENOANO出現在1992-08-01 發布的Linux 0.97中。很長一段時間,它沒有在任何地方使用;從那時起,它不時在某些驅動程序中被用作“我不知道要使用什麼錯誤程式碼”。它現在只在uapi/asm-generic/errno.h(即在使用者空間程序的標頭檔中),但它是自動移到那裡的,所以這並不能說明是否有人關心它。

0.97 中的errno.h標頭引起了一些關注,因為它是SCO 聲稱從 Unix SVR4 複製的文件之一。在 SCO 提出索賠時,Linus Torvalds 不記得該文件是如何組裝的;他後來發現它是從 libc 2.2.2 已知的值生成的。這是一個用於 Linux 的C 庫,隨 GCC for Linux 的一個埠一起分發。該庫可能包含當時存在的各種 unix 變體的錯誤程式碼。

Stéphane Chazelas 發現術語“陽極”在 Convergent/Burroughs Unix (CENTIX)中用作inode的同義詞。我發現另一本書(從 1993 年開始)提到“anode”是“inode”的變體,但除此之外,即使在那時它似乎也很模糊。Solariserrno.h確認了 Convergent 起源:它在標題為“Convergent Error Returns”的部分中列出了 ENOANO(以及一些其他帶有深奧描述但至少可以模糊理解的錯誤程式碼,例如“invalid exchange”、“exchange full”或“invalid slot”更多的驅動程序使用)。

所以 ENOANO 可能表明核心在 1980 年代的某些商業 Unix 中的 inode 記憶體不足,或者文件系統的 inode 表已滿。Unix 現在被遺忘了,它的術語現在也被遺忘了,並且由於一些怪癖,錯誤程式碼一直存在。

至少它不是“ lp0 on fire ”。

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