Aggiornamento data copyright
[gapil.git] / errors.tex
index f7842319e3ef8649eb7aea30a3dc34f153be6942..7598a88f36cac0be278e219ca15fa4a3a036265f 100644 (file)
@@ -1,6 +1,6 @@
 %% errors.tex
 %%
 %% errors.tex
 %%
-%% Copyright (C) 2000-2005 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2011 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
@@ -8,6 +8,7 @@
 %% license is included in the section entitled "GNU Free Documentation
 %% License".
 %%
 %% license is included in the section entitled "GNU Free Documentation
 %% License".
 %%
+
 \chapter{I codici di errore}
 \label{cha:errors}
 
 \chapter{I codici di errore}
 \label{cha:errors}
 
@@ -15,9 +16,10 @@ Si riportano in questa appendice tutti i codici di errore. Essi sono
 accessibili attraverso l'inclusione del file di header \file{errno.h}, che
 definisce anche la variabile globale \var{errno}. Per ogni errore definito
 riporteremo la stringa stampata da \func{perror} ed una breve spiegazione. Si
 accessibili attraverso l'inclusione del file di header \file{errno.h}, che
 definisce anche la variabile globale \var{errno}. Per ogni errore definito
 riporteremo la stringa stampata da \func{perror} ed una breve spiegazione. Si
-tenga presente che spiegazioni più particolareggiate, qualora necessarie per
-il caso specifico, possono essere trovate nella descrizione del prototipo
-della funzione.
+tenga presente che spiegazioni più particolareggiate del significato
+dell'errore, qualora necessarie per casi specifici, possono essere trovate
+nella descrizione del prototipo della funzione per cui detto errore si è
+verificato.
 
 I codici di errore sono riportati come costanti di tipo \ctyp{int}, i valori
 delle costanti sono definiti da macro di preprocessore nel file citato, e
 
 I codici di errore sono riportati come costanti di tipo \ctyp{int}, i valori
 delle costanti sono definiti da macro di preprocessore nel file citato, e
@@ -39,10 +41,10 @@ gestione dei file.
   permessa: solo il proprietario del file o un processo con sufficienti
   privilegi può eseguire l'operazione.
 \item \errcode{ENOENT} \textit{No such file or directory}. Il file indicato
   permessa: solo il proprietario del file o un processo con sufficienti
   privilegi può eseguire l'operazione.
 \item \errcode{ENOENT} \textit{No such file or directory}. Il file indicato
-  dal \index{\textit{pathname}}\textit{pathname} non esiste: o una delle
-  componenti non esiste o il \textit{pathname} contiene un link simbolico
-  spezzato.  Errore tipico di un riferimento ad un file che si suppone
-  erroneamente essere esistente.
+  dal \itindex{pathname} \textit{pathname} non esiste: o una delle componenti
+  non esiste o il \textit{pathname} contiene un link simbolico spezzato.
+  Errore tipico di un riferimento ad un file che si suppone erroneamente
+  essere esistente.
 \item \errcode{EIO} \textit{Input/output error}. Errore di input/output: usato
   per riportare errori hardware in lettura/scrittura su un dispositivo.
 \item \errcode{ENXIO} \textit{No such device or address}. Dispositivo
 \item \errcode{EIO} \textit{Input/output error}. Errore di input/output: usato
   per riportare errori hardware in lettura/scrittura su un dispositivo.
 \item \errcode{ENXIO} \textit{No such device or address}. Dispositivo
@@ -57,13 +59,14 @@ gestione dei file.
   scrivere, o viceversa, o si è cercato di eseguire un'operazione non
   consentita per quel tipo di file descriptor.
 \item \errcode{EACCES} \textit{Permission denied}. Permesso negato; l'accesso
   scrivere, o viceversa, o si è cercato di eseguire un'operazione non
   consentita per quel tipo di file descriptor.
 \item \errcode{EACCES} \textit{Permission denied}. Permesso negato; l'accesso
-  al file non è consentito: i permessi del file o della directory non
-  consentono l'operazione.
+  al file o alla directory non è consentito: i permessi del file o della
+  directory non consentono l'operazione richiesta.
 \item \errcode{ELOOP} \textit{Too many symbolic links encountered}. Ci sono
   troppi link simbolici nella risoluzione di un
 \item \errcode{ELOOP} \textit{Too many symbolic links encountered}. Ci sono
   troppi link simbolici nella risoluzione di un
-  \index{\textit{pathname}}\textit{pathname}.
+  \itindex{pathname}\textit{pathname}.
 \item \errcode{ENAMETOOLONG} \textit{File name too long}. Si è indicato un
 \item \errcode{ENAMETOOLONG} \textit{File name too long}. Si è indicato un
-  \textit{pathname} troppo lungo.
+  \itindex{pathname} \textit{pathname} troppo lungo per un file o una
+  directory.
 \item \errcode{ENOTBLK} \textit{Block device required}. Si è specificato un
   file che non è un \textit{block device} in un contesto in cui era necessario
   specificare un \textit{block device} (ad esempio si è tentato di montare un
 \item \errcode{ENOTBLK} \textit{Block device required}. Si è specificato un
   file che non è un \textit{block device} in un contesto in cui era necessario
   specificare un \textit{block device} (ad esempio si è tentato di montare un
@@ -80,29 +83,37 @@ gestione dei file.
 \item \errcode{ENOTDIR} \textit{Not a directory}. Si è specificato un file che
   non è una directory in una operazione che richiede una directory.
 \item \errcode{EISDIR} \textit{Is a directory}. Il file specificato è una
 \item \errcode{ENOTDIR} \textit{Not a directory}. Si è specificato un file che
   non è una directory in una operazione che richiede una directory.
 \item \errcode{EISDIR} \textit{Is a directory}. Il file specificato è una
-  directory, non può essere aperto in scrittura, né si possono creare o
+  directory; non può essere aperto in scrittura, né si possono creare o
   rimuovere link diretti ad essa.
 \item \errcode{EMFILE} \textit{Too many open files}. Il processo corrente ha
   rimuovere link diretti ad essa.
 \item \errcode{EMFILE} \textit{Too many open files}. Il processo corrente ha
-  troppi file aperti e non può aprirne altri. Anche i descrittori duplicati
-  vengono tenuti in conto\footnote{Il numero massimo di file aperti è
-    controllabile dal sistema, in Linux si può usare il comando
-    \cmd{ulimit}.}.
-\item \errcode{ENFILE} \textit{File table overflow}. Ci sono troppi file aperti
-  nel sistema. 
+  troppi file aperti e non può aprirne altri. Anche i descrittori duplicati ed
+  i socket vengono tenuti in conto.\footnote{il numero massimo di file aperti
+    è controllabile dal sistema; in Linux si può impostare usando il comando
+    \cmd{ulimit}, esso è in genere indicato dalla costante \const{OPEN\_MAX},
+    vedi sez.~\ref{sec:sys_limits}.}
+\item \errcode{ENFILE} \textit{File table overflow}. Il sistema ha troppi file
+  aperti in contemporanea. Si tenga presente che anche i socket contano come
+  file. Questa è una condizione temporanea, ed è molto difficile che si
+  verifichi nei sistemi moderni.
 \item \errcode{ENOTTY} \textit{Not a terminal}. Si è tentata una operazione di
   controllo relativa ad un terminale su un file che non lo è.
 \item \errcode{ETXTBSY} \textit{Text file busy}. Si è cercato di eseguire un
 \item \errcode{ENOTTY} \textit{Not a terminal}. Si è tentata una operazione di
   controllo relativa ad un terminale su un file che non lo è.
 \item \errcode{ETXTBSY} \textit{Text file busy}. Si è cercato di eseguire un
-  file che è aperto in scrittura, o scrivere un file che è in esecuzione. 
+  file che è aperto in scrittura, o di scrivere su un file che è in
+  esecuzione.
 \item \errcode{EFBIG} \textit{File too big}. Si è ecceduto il limite imposto
   dal sistema sulla dimensione massima che un file può avere.
 \item \errcode{EFBIG} \textit{File too big}. Si è ecceduto il limite imposto
   dal sistema sulla dimensione massima che un file può avere.
-\item \errcode{ENOSPC} \textit{No space left on device}. la directory in cui si
-  vuole creare il link non ha spazio per ulteriori voci.
-\item \errcode{ESPIPE} \textit{Invalid seek operation}. 
-\item \errcode{EROFS} \textit{Read-only file system}.  il file risiede su un
-  filesystem read-only.
-\item \errcode{EMLINK} \textit{Too many links}. Ci sono troppi link al file (il
-   numero massimo è specificato dalla variabile \const{LINK\_MAX}, vedi
-  sez.~\ref{sec:sys_limits}).
+\item \errcode{ENOSPC} \textit{No space left on device}. La directory in cui si
+  vuole creare il link non ha spazio per ulteriori voci, o si è cercato di
+  scrivere o di creare un nuovo file su un dispositivo che è già pieno.
+\item \errcode{ESPIPE} \textit{Invalid seek operation}. Si cercato di eseguire
+  una \func{seek} su un file che non supporta questa operazione (ad esempio su
+  una pipe). 
+\item \errcode{EROFS} \textit{Read-only file system}.  Si è cercato di
+  eseguire una operazione di scrittura su un file o una directory che risiede
+  su un filesystem montato un sola lettura.
+\item \errcode{EMLINK} \textit{Too many links}. Ci sono già troppi link al
+  file (il numero massimo è specificato dalla variabile \const{LINK\_MAX},
+  vedi sez.~\ref{sec:sys_limits}).
 \item \errcode{EPIPE} \textit{Broken pipe}. Non c'è un processo che stia
   leggendo l'altro capo della pipe. Ogni funzione che restituisce questo
   errore genera anche un segnale \const{SIGPIPE}, la cui azione predefinita è
 \item \errcode{EPIPE} \textit{Broken pipe}. Non c'è un processo che stia
   leggendo l'altro capo della pipe. Ogni funzione che restituisce questo
   errore genera anche un segnale \const{SIGPIPE}, la cui azione predefinita è
@@ -123,16 +134,16 @@ gestione dei file.
   montare via NFS un filesystem remoto con un nome  che già specifica un
   filesystem montato via NFS. 
 \item \errcode{ENOLCK} \textit{No locks available}. È usato dalle utilità per
   montare via NFS un filesystem remoto con un nome  che già specifica un
   filesystem montato via NFS. 
 \item \errcode{ENOLCK} \textit{No locks available}. È usato dalle utilità per
-  la gestione del file lock; non viene generato da un sistema GNU, ma può
+  la gestione del file locking; non viene generato da un sistema GNU, ma può
   risultare da un'operazione su un server NFS di un altro sistema.
   risultare da un'operazione su un server NFS di un altro sistema.
-\item \errcode{EFTYPE} \textit{Inappropriate file type or format}. Il file è di
-  tipo sbagliato rispetto all'operazione richiesta o un file di dati ha un
+\item \errcode{EFTYPE} \textit{Inappropriate file type or format}. Il file è
+  di tipo sbagliato rispetto all'operazione richiesta o un file di dati ha un
   formato sbagliato. Alcuni sistemi restituiscono questo errore quando si
   formato sbagliato. Alcuni sistemi restituiscono questo errore quando si
-  cerca di impostare lo \textit{sticky bit} su un file che non è una directory.
+  cerca di impostare lo \itindex{sticky~bit} \textit{sticky bit} su un file che
+  non è una directory.
 \end{description}
 
 
 \end{description}
 
 
-
 \section{Gli errori dei processi}
 \label{sec:err_proc_errors}
 
 \section{Gli errori dei processi}
 \label{sec:err_proc_errors}
 
@@ -141,17 +152,20 @@ attinenti ad errori che riguardano operazioni specifiche relative alla
 gestione dei processi.
 
 \begin{description}
 gestione dei processi.
 
 \begin{description}
-\item \errcode{ESRCH} \textit{No process matches the specified process ID}. Non
-  esiste un processo con il \acr{pid} specificato.
-\item \errcode{E2BIG} \textit{Argument list too long}. Lista degli argomenti
-  troppo lunga: è una condizione prevista da POSIX quando la lista degli
-  argomenti passata ad una delle funzioni \func{exec} occupa troppa memoria,
-  non può mai accadere in GNU/Linux.
-\item \errcode{ECHILD} \textit{There are no child processes}. Non esiste un
-  processo figlio. Viene rilevato dalle funzioni per la gestione dei processi
-  figli. 
-%\item \errcode{EPROCLIM} \textit{}.  Il limite dell'utente per nuovi processi
-%  sarà ecceduto alla prossima \func{fork}. (non credo esista in Linux)
+\item \errcode{ESRCH} \textit{No process matches the specified process ID}.
+  Non esiste un processo o un \itindex{process~group} \textit{process group}
+  corrispondenti al valore dell'identificativo specificato.
+\item \errcode{E2BIG} \textit{Argument list too long}. La lista degli
+  argomenti passati è troppo lunga: è una condizione prevista da POSIX quando
+  la lista degli argomenti passata ad una delle funzioni \func{exec} occupa
+  troppa memoria, non può mai accadere in GNU/Linux.
+\item \errcode{ECHILD} \textit{There are no child processes}. Non esistono
+  processi figli di cui attendere la terminazione. Viene rilevato dalle
+  funzioni \func{wait} e \func{waitpid} (vedi sez.~\ref{sec:proc_wait}).
+\item \errcode{EPROCLIM} \textit{Too many processes}.  Il limite dell'utente
+  per nuovi processi (vedi sez.~\ref{sec:sys_resource_limit}) sarà ecceduto
+  alla prossima \func{fork}; è un codice di errore di BSD, che non viene
+  utilizzato al momento su Linux. 
 \end{description}
 
 
 \end{description}
 
 
@@ -193,11 +207,12 @@ gestione dei socket e delle connessioni di rete.
   Famiglia di indirizzi non supportata. La famiglia di indirizzi richiesta non
   è supportata, o è inconsistente con il protocollo usato dal socket.
 \item \errcode{EADDRINUSE} \textit{Address already in use}. L'indirizzo del
   Famiglia di indirizzi non supportata. La famiglia di indirizzi richiesta non
   è supportata, o è inconsistente con il protocollo usato dal socket.
 \item \errcode{EADDRINUSE} \textit{Address already in use}. L'indirizzo del
-  socket richiesto è gia utilizzato (ad esempio si è richiesto il \func{bind}
-  per una porta già in uso).
-\item \errcode{EADDRNOTAVAIL} \textit{Cannot assign requested address}.
-  L'indirizzo richiesto non è disponibile (ad esempio si è cercato di dare al
-  socket un nome che non corrisponde al nome della stazione locale).
+  socket richiesto è già utilizzato (ad esempio si è eseguita \func{bind}
+  su una porta già in uso).
+\item \errcode{EADDRNOTAVAIL} \textit{Cannot assign requested
+    address}.  L'indirizzo richiesto non è disponibile (ad esempio si
+  è cercato di dare al socket un nome che non corrisponde al nome
+  della stazione locale), o l'interfaccia richiesta non esiste.
 \item \errcode{ENETDOWN} \textit{Network is down}. L'operazione sul socket è
   fallita perché la rete è sconnessa.
 \item \errcode{ENETUNREACH} \textit{Network is unreachable}. L'operazione è
 \item \errcode{ENETDOWN} \textit{Network is down}. L'operazione sul socket è
   fallita perché la rete è sconnessa.
 \item \errcode{ENETUNREACH} \textit{Network is unreachable}. L'operazione è
@@ -217,7 +232,7 @@ gestione dei socket e delle connessioni di rete.
   caso di operazioni sulla rete si può ottenere questo errore invece
   dell'altro.
 \item \errcode{EISCONN} \textit{Transport endpoint is already connected}. Si è
   caso di operazioni sulla rete si può ottenere questo errore invece
   dell'altro.
 \item \errcode{EISCONN} \textit{Transport endpoint is already connected}. Si è
-  tentato di connettere un socket che è gia connesso.
+  tentato di connettere un socket che è già connesso.
 \item \errcode{ENOTCONN} \textit{Transport endpoint is not connected}. Il
   socket non è connesso a niente. Si ottiene questo errore quando si cerca di
   trasmettere dati su un socket senza avere specificato in precedenza la loro
 \item \errcode{ENOTCONN} \textit{Transport endpoint is not connected}. Il
   socket non è connesso a niente. Si ottiene questo errore quando si cerca di
   trasmettere dati su un socket senza avere specificato in precedenza la loro
@@ -231,7 +246,7 @@ gestione dei socket e delle connessioni di rete.
     shutdown}. Il socket su cui si cerca di inviare dei dati ha avuto uno
   shutdown.
 \item \errcode{ETOOMANYREFS} \textit{Too many references: cannot splice}. La
     shutdown}. Il socket su cui si cerca di inviare dei dati ha avuto uno
   shutdown.
 \item \errcode{ETOOMANYREFS} \textit{Too many references: cannot splice}. La
-  glibc dice ???
+  \acr{glibc} dice ???
 \item \errcode{ETIMEDOUT} \textit{Connection timed out}. Un'operazione sul
   socket non ha avuto risposta entro il periodo di timeout.
 \item \errcode{ECONNREFUSED} \textit{Connection refused}. Un host remoto ha
 \item \errcode{ETIMEDOUT} \textit{Connection timed out}. Un'operazione sul
   socket non ha avuto risposta entro il periodo di timeout.
 \item \errcode{ECONNREFUSED} \textit{Connection refused}. Un host remoto ha
@@ -252,27 +267,29 @@ specificati nelle sezioni precedenti.
 \begin{description}
 \item \errcode{EINTR} \textit{Interrupted function call}. Una funzione di
   libreria è stata interrotta. In genere questo avviene causa di un segnale
 \begin{description}
 \item \errcode{EINTR} \textit{Interrupted function call}. Una funzione di
   libreria è stata interrotta. In genere questo avviene causa di un segnale
-  asincrono al processo che impedisce la conclusione della chiamata. In questo
-  caso è necessario ripetere la chiamata alla funzione. 
+  asincrono al processo che impedisce la conclusione della chiamata, la
+  funzione ritorna con questo errore una volta che si sia correttamente
+  eseguito il gestore del segnale. In questo caso è necessario ripetere la
+  chiamata alla funzione.
 \item \errcode{ENOMEM} \textit{No memory available}. Il kernel non è in grado
   di allocare ulteriore memoria per completare l'operazione richiesta.
 \item \errcode{EDEADLK} \textit{Deadlock avoided}. L'allocazione di una
 \item \errcode{ENOMEM} \textit{No memory available}. Il kernel non è in grado
   di allocare ulteriore memoria per completare l'operazione richiesta.
 \item \errcode{EDEADLK} \textit{Deadlock avoided}. L'allocazione di una
-  risorsa avrebbe causato un \textit{deadlock}\index{\textit{deadlock}}. Non
-  sempre il sistema è in grado di riconoscere queste situazioni, nel qual caso
-  si avrebbe il blocco.
-\item \errcode{EFAULT} \textit{Bad address}. Una stringa passata come parametro
-  è fuori dello spazio di indirizzi del processo, in genere questa situazione
-  provoca l'emissione di un segnale di \textit{segment violation}
-  (\const{SIGSEGV}).
+  risorsa avrebbe causato un \itindex{deadlock} \textit{deadlock}. Non sempre
+  il sistema è in grado di riconoscere queste situazioni, nel qual caso si
+  avrebbe il blocco.
+\item \errcode{EFAULT} \textit{Bad address}. Una stringa passata come
+  argomento è fuori dello spazio di indirizzi del processo, in genere questa
+  situazione provoca direttamente l'emissione di un segnale di
+  \itindex{segment~violation} \textit{segment violation} (\const{SIGSEGV}).
 \item \errcode{EINVAL} \textit{Invalid argument}. Errore utilizzato per
   segnalare vari tipi di problemi dovuti all'aver passato un argomento
   sbagliato ad una funzione di libreria.
 \item \errcode{EDOM} \textit{Domain error}. È usato dalle funzioni matematiche
 \item \errcode{EINVAL} \textit{Invalid argument}. Errore utilizzato per
   segnalare vari tipi di problemi dovuti all'aver passato un argomento
   sbagliato ad una funzione di libreria.
 \item \errcode{EDOM} \textit{Domain error}. È usato dalle funzioni matematiche
-  quando il valore di un argomento è al di fuori dell'intervallo in cui sono
-  definite. 
-\item \errcode{ERANGE} \textit{Range error}. È usato dalle funzioni matematiche
-  quando il risultato non è rappresentabile a causa di un overflow o di un
-  underflow.
+  quando il valore di un argomento è al di fuori dell'intervallo in cui esse
+  sono definite.
+\item \errcode{ERANGE} \textit{Range error}. È usato dalle funzioni
+  matematiche quando il risultato dell'operazione non è rappresentabile nel
+  valore di ritorno a causa di un overflow o di un underflow.
 \item \errcode{EAGAIN} \textit{Resource temporarily unavailable}. La funzione è
   fallita ma potrebbe funzionare se la chiamata fosse ripetuta. Questo errore
   accade in due tipologie di situazioni:
 \item \errcode{EAGAIN} \textit{Resource temporarily unavailable}. La funzione è
   fallita ma potrebbe funzionare se la chiamata fosse ripetuta. Questo errore
   accade in due tipologie di situazioni:
@@ -291,8 +308,11 @@ specificati nelle sezioni precedenti.
     carenza è spesso indice di qualcosa che non va nel sistema, è pertanto
     opportuno segnalare esplicitamente questo tipo di errori.
   \end{itemize}
     carenza è spesso indice di qualcosa che non va nel sistema, è pertanto
     opportuno segnalare esplicitamente questo tipo di errori.
   \end{itemize}
-\item \errcode{EWOULDBLOCK} \textit{Operation would block}. In Linux è identico
-  a \errcode{EAGAIN}.
+\item \errcode{EWOULDBLOCK} \textit{Operation would block}. Indica che
+  l'operazione richiesta si bloccherebbe, ad esempio se si apre un file in
+  modalità non bloccante, una \func{read} restituirebbe questo errore per
+  indicare che non ci sono dati; in Linux è identico a \errcode{EAGAIN}, ma in
+  altri sistemi può essere specificato un valore diverso.
 \item \errcode{EINPROGRESS} \textit{Operation now in progress}. Operazione in
   corso. Un'operazione che non può essere completata immediatamente è stata
   avviata su un oggetto posto in modalità non-bloccante. Questo errore viene
 \item \errcode{EINPROGRESS} \textit{Operation now in progress}. Operazione in
   corso. Un'operazione che non può essere completata immediatamente è stata
   avviata su un oggetto posto in modalità non-bloccante. Questo errore viene
@@ -310,7 +330,7 @@ specificati nelle sezioni precedenti.
   abilitato l'opportuno supporto nel kernel; nel caso di Linux questo può
   voler dire anche che un modulo necessario non è stato caricato nel sistema.
 \item \errcode{ENOTSUP} \textit{Not supported}. Una funzione ritorna questo
   abilitato l'opportuno supporto nel kernel; nel caso di Linux questo può
   voler dire anche che un modulo necessario non è stato caricato nel sistema.
 \item \errcode{ENOTSUP} \textit{Not supported}. Una funzione ritorna questo
-  errore quando i parametri sono validi ma l'operazione richiesta non è
+  errore quando gli argomenti sono validi ma l'operazione richiesta non è
   supportata. Questo significa che la funzione non implementa quel particolare
   comando o opzione o che, in caso di oggetti specifici (file descriptor o
   altro) non è in grado di supportare i parametri richiesti.
   supportata. Questo significa che la funzione non implementa quel particolare
   comando o opzione o che, in caso di oggetti specifici (file descriptor o
   altro) non è in grado di supportare i parametri richiesti.
@@ -319,8 +339,9 @@ specificati nelle sezioni precedenti.
   specificato un valore non valido.
 \end{description}
 
   specificato un valore non valido.
 \end{description}
 
-
 \begin{description}
 \begin{description}
+
+% definiti nel manuale delle glibc ma inesistenti in linux/errno.h
 %\item \errcode{EBADRPC} \textit{}. 
 %\item \errcode{ERPCMISMATCH} \textit{}. 
 %\item \errcode{EPROGUNAVAIL} \textit{}. 
 %\item \errcode{EBADRPC} \textit{}. 
 %\item \errcode{ERPCMISMATCH} \textit{}. 
 %\item \errcode{EPROGUNAVAIL} \textit{}. 
@@ -330,79 +351,160 @@ specificati nelle sezioni precedenti.
 %\item \errcode{ENEEDAUTH} \textit{}. 
 %\item \errcode{EBACKGROUND} \textit{}. 
 %\item \errcode{EDIED} \textit{}. 
 %\item \errcode{ENEEDAUTH} \textit{}. 
 %\item \errcode{EBACKGROUND} \textit{}. 
 %\item \errcode{EDIED} \textit{}. 
+% questi sembrano scherzi, sempre dal manuale delle glibc...
 %\item \errcode{ED} \textit{}. 
 %\item \errcode{EGREGIOUS} \textit{}. 
 %\item \errcode{EIEIO} \textit{}. 
 %\item \errcode{ED} \textit{}. 
 %\item \errcode{EGREGIOUS} \textit{}. 
 %\item \errcode{EIEIO} \textit{}. 
-%\item \errcode{EGRATUITOUS} \textit{}. 
-\item \errcode{EBADMSG} \textit{Not a data message}. 
+%\item \errcode{EGRATUITOUS} \textit{} roba di Hurd, pare. 
+
+
+\item \errcode{EBADMSG} \textit{Not a data message}. Definito da POSIX come
+errore che arriva ad una funzione di lettura che opera su uno stream. Non
+essendo gli stream definiti su Linux il kernel non genera mai questo tipo di
+messaggio. 
+
+\item \errcode{EMULTIHOP} \textit{Multihop attempted}. Definito da POSIX come
+  errore dovuto all'accesso a file remoti attraverso più macchine, quando ciò
+  non è consentito. Non viene mai generato su Linux.
+
 \item \errcode{EIDRM} \textit{Identifier removed}. Indica che l'oggetto del
 \item \errcode{EIDRM} \textit{Identifier removed}. Indica che l'oggetto del
-  \textit{SysV IPC} cui si fa riferimento è stato cancellato.
-\item \errcode{EMULTIHOP} \textit{Multihop attempted}. 
-\item \errcode{ENODATA} \textit{No data available}. 
-\item \errcode{ENOLINK} \textit{Link has been severed}. 
-\item \errcode{ENOMSG} \textit{No message of desired type}. 
-\item \errcode{ENOSR} \textit{Out of streams resources}. 
-\item \errcode{ENOSTR} \textit{Device not a stream}. 
-\item \errcode{EOVERFLOW} \textit{Value too large for defined data type}. 
-\item \errcode{EPROTO} \textit{Protocol error}. 
-\item \errcode{ETIME} \textit{Timer expired}. 
-\end{description}
+  \textit{SysV IPC} a cui si fa riferimento è stato cancellato.
 
 
+\item \errcode{ENODATA} \textit{No data available}. Viene indicato da POSIX
+  come restituito da una \func{read} eseguita su un file descriptor in
+  modalità non bloccante quando non ci sono dati. In realtà in questo caso su
+  Linux viene utilizzato \errcode{EAGAIN}. Lo stesso valore valore però viene
+  usato come sinonimo di \errcode{ENOATTR}. 
 
 
+\item \errcode{ENOATTR} \textit{No such attribute}. È un codice di errore
+  specifico di Linux utilizzato dalle funzioni per la gestione degli attributi
+  estesi dei file (vedi sez.~\ref{sec:file_xattr}) quando il nome
+  dell'attributo richiesto non viene trovato.
 
 
+\item \errcode{ENOLINK} \textit{Link has been severed}. È un errore il cui
+  valore è indicato come \textsl{riservato} nelle \textit{Single Unix
+    Specification}. Dovrebbe indicare l'impossibilità di accedere ad un file a
+  causa di un errore sul collegamento di rete, ma non ci sono indicazioni
+  precise del suo utilizzo. Per quanto riguarda Linux viene riportato nei
+  sorgenti del kernel in alcune operazioni relative ad operazioni di rete. 
 
 
+\item \errcode{ENOMSG} \textit{No message of desired type}. Indica che in una
+  coda di messaggi del \textit{SysV IPC} non è presente nessun messaggio del
+  tipo desiderato.
 
 
-\section{Errori del kernel}
-\label{sec:err_kernel_err}
+\item \errcode{ENOSR} \textit{Out of streams resources}. Errore relativo agli
+  \textit{STREAMS}, che indica l'assenza di risorse sufficienti a completare
+  l'operazione richiesta. Quella degli \textit{STREAMS}\footnote{che non vanno
+    confusi con gli \textit{stream} di cap.~\ref{cha:files_std_interface}.}  è
+  interfaccia di programmazione originaria di System V, che non è implementata
+  da Linux, per cui questo errore non viene utilizzato.
 
 
-In questa sezione sono raccolti i codici di errore interni del kernel. Non
-sono usati dalle funzioni di libreria, ma vengono riportati da alcune system
-call (TODO verificare i dettagli, eventualmente cassare).
+\item \errcode{ENOSTR} \textit{Device not a stream}. Altro errore relativo
+  agli \textit{STREAMS}, anch'esso non utilizzato da Linux.
 
 
-\begin{description}
-\item \errcode{ERESTART} \textit{Interrupted system call should be restarted}. 
-\item \errcode{ECHRNG} \textit{Channel number out of range}. 
-\item \errcode{EL2NSYNC} \textit{Level 2 not synchronized}. 
-\item \errcode{EL3HLT} \textit{Level 3 halted}. 
-\item \errcode{EL3RST} \textit{Level 3 reset}. 
-\item \errcode{ELNRNG} \textit{Link number out of range}. 
-\item \errcode{EUNATCH} \textit{Protocol driver not attached}. 
-\item \errcode{ENOCSI} \textit{No CSI structure available}. 
-\item \errcode{EL2HLT} \textit{Level 2 halted}. 
-\item \errcode{EBADE} \textit{Invalid exchange}. 
-\item \errcode{EBADR} \textit{Invalid request descriptor}. 
-\item \errcode{EXFULL} \textit{Exchange full}. 
-\item \errcode{ENOANO} \textit{No anode}. 
-\item \errcode{EBADRQC} \textit{Invalid request code}. 
-\item \errcode{EBADSLT} \textit{Invalid slot}. 
-\item \errcode{EDEADLOCK} Identico a \errcode{EDEADLK}. 
-\item \errcode{EBFONT} \textit{Bad font file format}. 
-\item \errcode{ENONET} \textit{Machine is not on the network}. 
-\item \errcode{ENOPKG} \textit{Package not installed}. 
-\item \errcode{EADV} \textit{Advertise error}. 
-\item \errcode{ESRMNT} \textit{Srmount error}. 
-\item \errcode{ECOMM} \textit{Communication error on send}. 
-\item \errcode{EDOTDOT} \textit{RFS specific error}. 
-\item \errcode{ENOTUNIQ} \textit{Name not unique on network}. 
-\item \errcode{EBADFD} \textit{File descriptor in bad state}. 
-\item \errcode{EREMCHG} \textit{Remote address changed}. 
-\item \errcode{ELIBACC} \textit{Can not access a needed shared library}. 
-\item \errcode{ELIBBAD} \textit{Accessing a corrupted shared library}. 
-\item \errcode{ELIBSCN} \textit{.lib section in a.out corrupted}. 
-\item \errcode{ELIBMAX} \textit{Attempting to link in too many shared
-    libraries}.
-\item \errcode{ELIBEXEC} \textit{Cannot exec a shared library directly}. 
-\item \errcode{ESTRPIPE} \textit{Streams pipe error}. 
-\item \errcode{EUCLEAN} \textit{Structure needs cleaning}. 
-\item \errcode{ENAVAIL} \textit{No XENIX semaphores available}. 
-\item \errcode{EISNAM} \textit{Is a named type file}. 
-\item \errcode{EREMOTEIO} \textit{Remote I/O error}. 
-\item \errcode{ENOMEDIUM} \textit{No medium found}. 
-\item \errcode{EMEDIUMTYPE} \textit{Wrong medium type}. 
+\item \errcode{EOVERFLOW} \textit{Value too large for defined data type}. Si è
+  chiesta la lettura di un dato dal \textit{SysV IPC} con \const{IPC\_STAT} ma
+  il valore eccede la dimensione usata nel buffer di lettura.
+
+\item \errcode{EPROTO} \textit{Protocol error}. Indica che c'è stato un errore
+  nel protocollo di rete usato dal socket; viene usato come errore generico
+  dall'interfaccia degli \textit{STREAMS} quando non si è in grado di
+  specificare un altro codice di errore che esprima più accuratamente la
+  situazione.
+
+\item \errcode{ETIME} \textit{Timer expired}. Indica che è avvenuto un timeout
+  nell'accesso ad una risorsa (ad esempio un semaforo). Compare nei sorgenti
+  del kernel (in particolare per le funzioni relativa al bus USB) come
+  indicazione di una mancata risposta di un dispositivo, con una descrizione
+  alternativa di \textit{Device did not respond}.
 \end{description}
 
 
 
 \end{description}
 
 
 
+% \section{Errori del kernel}
+% \label{sec:err_kernel_err}
+
+% In questa sezione sono raccolti i codici di errore interni del kernel. Non
+% sono usati dalle funzioni di libreria, ma vengono riportati da alcune system
+% call 
+% TODO verificare i dettagli degli errori del kernel, eventualmente cassare.
+
+% \begin{description}
+% \item \errcode{ERESTART} \textit{Interrupted system call should be restarted}. 
+% \item \errcode{ECHRNG} \textit{Channel number out of range}. 
+% \item \errcode{EL2NSYNC} \textit{Level 2 not synchronized}. 
+% \item \errcode{EL3HLT} \textit{Level 3 halted}. 
+% \item \errcode{EL3RST} \textit{Level 3 reset}. 
+% \item \errcode{ELNRNG} \textit{Link number out of range}. 
+% \item \errcode{EUNATCH} \textit{Protocol driver not attached}. 
+% \item \errcode{ENOCSI} \textit{No CSI structure available}. 
+% \item \errcode{EL2HLT} \textit{Level 2 halted}. 
+% \item \errcode{EBADE} \textit{Invalid exchange}. 
+% \item \errcode{EBADR} \textit{Invalid request descriptor}. 
+% \item \errcode{EXFULL} \textit{Exchange full}. 
+% \item \errcode{ENOANO} \textit{No anode}. 
+% \item \errcode{EBADRQC} \textit{Invalid request code}. 
+% \item \errcode{EBADSLT} \textit{Invalid slot}. 
+% \item \errcode{EDEADLOCK} Identico a \errcode{EDEADLK}. 
+% \item \errcode{EBFONT} \textit{Bad font file format}. 
+% \item \errcode{ENONET} \textit{Machine is not on the network}. 
+% \item \errcode{ENOPKG} \textit{Package not installed}. 
+% \item \errcode{EADV} \textit{Advertise error}. 
+% \item \errcode{ESRMNT} \textit{Srmount error}. 
+% \item \errcode{ECOMM} \textit{Communication error on send}. 
+% \item \errcode{EDOTDOT} \textit{RFS specific error}. 
+% \item \errcode{ENOTUNIQ} \textit{Name not unique on network}. 
+% \item \errcode{EBADFD} \textit{File descriptor in bad state}. 
+% \item \errcode{EREMCHG} \textit{Remote address changed}. 
+% \item \errcode{ELIBACC} \textit{Can not access a needed shared library}. 
+% \item \errcode{ELIBBAD} \textit{Accessing a corrupted shared library}. 
+% \item \errcode{ELIBSCN} \textit{.lib section in a.out corrupted}. 
+% \item \errcode{ELIBMAX} \textit{Attempting to link in too many shared
+%     libraries}.
+% \item \errcode{ELIBEXEC} \textit{Cannot exec a shared library directly}. 
+% \item \errcode{ESTRPIPE} \textit{Streams pipe error}. 
+% \item \errcode{EUCLEAN} \textit{Structure needs cleaning}. 
+% \item \errcode{ENAVAIL} \textit{No XENIX semaphores available}. 
+% \item \errcode{EISNAM} \textit{Is a named type file}. 
+% \item \errcode{EREMOTEIO} \textit{Remote I/O error}. 
+% \item \errcode{ENOMEDIUM} \textit{No medium found}. 
+% \item \errcode{EMEDIUMTYPE} \textit{Wrong medium type}. 
+% \end{description}
+
+
+% LocalWords:  header errno perror int strerror sez EPERM Operation not ENOENT
+% LocalWords:  permitted such pathname EIO error ENXIO device address kernel Is
+% LocalWords:  ENOEXEC Invalid executable format exec EBADF Bad descriptor Too
+% LocalWords:  EACCES Permission denied ELOOP many symbolic links encountered
+% LocalWords:  ENAMETOOLONG name too long ENOTBLK Block required block EEXIST
+% LocalWords:  exists EBUSY Resource busy filesystem EXDEV ENODEV ENOTDIR files
+% LocalWords:  EISDIR EMFILE ulimit ENFILE table overflow ENOTTY ETXTBSY Text
+% LocalWords:  EFBIG big ENOSPC left ESPIPE seek operation EROFS Read only read
+% LocalWords:  system EMLINK EPIPE Broken SIGPIPE ENOTEMPTY empty EUSERS users
+% LocalWords:  EDQUOT exceeded ESTALE NFS handle EREMOTE Object is ENOLCK locks
+% LocalWords:  available locking EFTYPE type sticky ESRCH process matches the
+% LocalWords:  specified pid Argument list POSIX ECHILD There child processes
+% LocalWords:  socket ENOTSOCK EMSGSIZE Message EPROTOTYPE Protocol wrong for
+% LocalWords:  ENOPROTOOPT EPROTONOSUPPORT supported ESOCKTNOSUPPORT EOPNOTSUPP
+% LocalWords:  transport endpoint EPFNOSUPPORT family EAFNOSUPPORT protocol of
+% LocalWords:  EADDRINUSE already bind EADDRNOTAVAIL Cannot assign requested to
+% LocalWords:  ENETDOWN ENETUNREACH unreachable ENETRESET dropped connection
+% LocalWords:  because reset l'host ECONNABORTED caused abort ECONNRESET peer
+% LocalWords:  dell'host ENOBUFS ENOMEM EISCONN connected ENOTCONN UDP send now
+% LocalWords:  EDESTADDRREQ Destination ESHUTDOWN after shutdown ETOOMANYREFS
+% LocalWords:  references cannot splice glibc ETIMEDOUT timed ECONNREFUSED host
+% LocalWords:  refused EHOSTDOWN EHOSTUNREACH route EINTR Interrupted function
+% LocalWords:  call memory EDEADLK Deadlock avoided deadlock EFAULT segment IPC
+% LocalWords:  violation SIGSEGV EINVAL argument EDOM Domain ERANGE underflow
+% LocalWords:  EAGAIN temporarily unavailable EWOULDBLOCK select fork would has
+% LocalWords:  EINPROGRESS progress connect EALREADY ENOSYS implemented ENOTSUP
+% LocalWords:  EILSEQ Illegal sequence EBADMSG message EIDRM Identifier removed
+% LocalWords:  SysV EMULTIHOP Multihop attempted ENODATA ENOLINK been severed
+% LocalWords:  ENOMSG desired ENOSR streams resources ENOSTR stream EOVERFLOW
+% LocalWords:  Value large defined STAT EPROTO ETIME Timer expired group wait
+% LocalWords:  waitpid Specification cap USB did respond Stale
+
+
 %%% Local Variables: 
 %%% mode: latex
 %%% TeX-master: "gapil"
 %%% Local Variables: 
 %%% mode: latex
 %%% TeX-master: "gapil"