Para que é utilizado o ENOANO (sem ânodo)?


11

Essa pergunta é meramente curiosa, mas suspeito que outros também serão curiosos. Pesquisando no errno.h (do Linux 2.6), encontrei o ENOANO "No Anode". Não há sinal de erro "Sem cátodo". Observando as concordâncias da fonte do kernel, ele não parece ser usado por um dispositivo chamado ânodo, apenas como um código de erro deliberadamente maluco de alguns drivers de dispositivo obscuros. O Google não revelou nada de interessante.

Talvez seja uma piada? É definido em um documento de padrões como o POSIX, mas não serve?


3
Este é o erro que você obtém se esquecer de conectar uma fonte de alimentação.
Goldilocks

2
Parece vir de sistemas unix convergentes archive.org/stream/…
Stéphane Chazelas

1
Ah, isso parece plausível, @ Stéphane Chazelas. Parece que um ânodo é um nó-a, como um inode.
Dan Sheppard

Respostas:


14

ENOANOapareceu no Linux 0.97 , lançado em 01/08/1992. Por muito tempo, não foi usado em lugar algum; desde então, é usado de vez em quando em alguns drivers como "eu não sabia qual código de erro usar". Agora ele está apenas em uapi/asm-generic/errno.h(ou seja, nos arquivos de cabeçalho dos programas da terra do usuário ), mas foi movido para lá automaticamente, de modo que não há indicação de que alguém se importe com isso.

O errno.hcabeçalho em 0,97 chamou atenção porque é um dos arquivos que o SCO afirmou ter sido copiado do Unix SVR4 . Na época das reivindicações da SCO, Linus Torvalds não se lembrava de como esse arquivo havia sido montado ; ele descobriu mais tarde que havia sido gerado a partir de valores conhecidos pela libc 2.2.2 . Esta era uma biblioteca C para Linux, distribuída com uma porta do GCC para Linux . Essa biblioteca provavelmente incluiria códigos de erro de todos os tipos de variantes do Unix existentes na época.

Stéphane Chazelas descobriu que o termo “ânodo” era usado no Convergent / Burroughs Unix (CENTIX) como sinônimo de inode . Eu encontrei outro livro (de 1993) mencionando "anode" como uma variante de "inode", mas fora isso, parece ter sido bastante obscuro até então. O Solariserrno.h confirma a origem convergente: lista ENOANO em uma seção intitulada "Retorno de erro convergente" (junto com alguns outros códigos de erro com descrições esotéricas, mas pelo menos vagamente compreensíveis como "troca inválida", "troca cheia" ou "slot inválido" que mais alguns drivers usam).

Portanto, o ENOANO provavelmente indicou que o kernel ficou sem memória para os inodes ou que a tabela de inodes do sistema de arquivos estava cheia, em algum Unix comercial nos anos 80. Que o Unix agora está esquecido, sua terminologia agora está esquecida e, devido a algumas peculiaridades, o código de erro ficou por aí.

Pelo menos não é " lp0 em chamas ".


2
Eu tenho uma cópia de um errno.h de 1988 do Xenix 2.3.1 mencionando um monte de errnos na seção "Devoluções de erros convergentes". O mesmo .
Stéphane Chazelas

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.