%% errors.tex
%%
-%% Copyright (C) 2000-2011 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2015 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",
\label{cha:errors}
Si riportano in questa appendice tutti i codici di errore. Essi sono
-accessibili attraverso l'inclusione del file di header \file{errno.h}, che
+accessibili attraverso l'inclusione del file di header \headfile{errno.h}, che
definisce anche la \index{variabili!globali} 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ù
\section{Gli errori dei file}
\label{sec:err_file_errors}
-In questa sezione sono raccolti i codici restituiti dalle funzioni di libreria
+In questa sezione sono raccolti i codici restituiti dalle \textit{system call}
attinenti ad errori che riguardano operazioni specifiche relative alla
gestione dei file.
-\begin{description}
-\item \errcode{EPERM} \textit{Operation not permitted}. L'operazione non è
+\begin{basedescript}{\desclabelwidth{2.cm}\desclabelstyle{\nextlinelabel}}
+\item[\errcode{EPERM} \textit{Operation not permitted}.] L'operazione non è
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 \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{ENOENT} \textit{No such file or directory}.] Il file indicato
+ dal \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
inesistente: il sistema ha tentato di usare un dispositivo attraverso il
file specificato, ma non lo ha trovato. Può significare che il file di
dispositivo non è corretto, che il modulo relativo non è stato caricato nel
kernel, o che il dispositivo è fisicamente assente o non funzionante.
-\item \errcode{ENOEXEC} \textit{Invalid executable file format}. Il file non ha
- un formato eseguibile, è un errore riscontrato dalle funzioni \func{exec}.
-\item \errcode{EBADF} \textit{Bad file descriptor}. File descriptor non valido:
- si è usato un file descriptor inesistente, o aperto in sola lettura per
- scrivere, o viceversa, o si è cercato di eseguire un'operazione non
+\item[\errcode{ENOEXEC} \textit{Invalid executable file format}.] Il file non
+ ha un formato eseguibile, è un errore riscontrato dalle funzioni
+ \func{exec}.
+\item[\errcode{EBADF} \textit{Bad file descriptor}.] File descriptor non
+ valido: si è usato un file descriptor inesistente, o aperto in sola lettura
+ per 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
+\item[\errcode{EACCES} \textit{Permission denied}.] Permesso negato; l'accesso
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
- \itindex{pathname}\textit{pathname}.
-\item \errcode{ENAMETOOLONG} \textit{File name too long}. Si è indicato un
- \itindex{pathname} \textit{pathname} troppo lungo per un file o una
- directory.
-\item \errcode{ENOTBLK} \textit{Block device required}. Si è specificato un
+\item[\errcode{ELOOP} \textit{Too many symbolic links encountered}.] Ci sono
+ troppi link simbolici nella risoluzione di un \textit{pathname}.
+\item[\errcode{ENAMETOOLONG} \textit{File name too long}.] Si è indicato un
+ \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
file ordinario).
-\item \errcode{EEXIST} \textit{File exists}. Si è specificato un file esistente
- in un contesto in cui ha senso solo specificare un nuovo file.
-\item \errcode{EBUSY} \textit{Resource busy}. Una risorsa di sistema che non
+\item[\errcode{EEXIST} \textit{File exists}.] Si è specificato un file
+ esistente in un contesto in cui ha senso solo specificare un nuovo file.
+\item[\errcode{EBUSY} \textit{Resource busy}.] Una risorsa di sistema che non
può essere condivisa è occupata. Ad esempio si è tentato di cancellare la
directory su cui si è montato un filesystem.
-\item \errcode{EXDEV} \textit{Cross-device link}. Si è tentato di creare un
+\item[\errcode{EXDEV} \textit{Cross-device link}.] Si è tentato di creare un
link diretto che attraversa due filesystem differenti.
-\item \errcode{ENODEV} \textit{No such device}. Si è indicato un tipo di device
- sbagliato ad una funzione che ne richiede uno specifico.
-\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{ENODEV} \textit{No such device}.] Si è indicato un tipo di
+ device sbagliato ad una funzione che ne richiede uno specifico.
+\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
rimuovere link diretti ad essa.
-\item \errcode{EMFILE} \textit{Too many open files}. Il processo corrente ha
+\item[\errcode{EMFILE} \textit{Too many open files}.] Il processo corrente ha
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
+\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 di scrivere su un file che è in
esecuzione.
-\item \errcode{EFBIG} \textit{File too big}. Si è ecceduto il limite imposto
+\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, o si è cercato di
+\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
+\item[\errcode{ESPIPE} \textit{Invalid seek operation}.] Si cercato di
+ eseguire una \func{lseek} su un file che non supporta questa operazione (ad
+ esempio su una \textit{pipe}, da cui il nome).
+\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
+\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 \signal{SIGPIPE}, la cui azione predefinita è
terminare il programma; pertanto non si potrà vedere questo errore fintanto
che \signal{SIGPIPE} non viene gestito o bloccato.
-\item \errcode{ENOTEMPTY} \textit{Directory not empty}. La directory non è
+\item[\errcode{ENOTEMPTY} \textit{Directory not empty}.] La directory non è
vuota quando l'operazione richiede che lo sia. È l'errore tipico che si ha
quando si cerca di cancellare una directory contenente dei file.
-\item \errcode{EUSERS} \textit{Too many users}. Troppi utenti, il sistema delle
+\item[\errcode{EUSERS} \textit{Too many users}.] Troppi utenti, il sistema delle
quote rileva troppi utenti nel sistema.
-\item \errcode{EDQUOT} \textit{Quota exceeded}. Si è ecceduta la quota di disco
+\item[\errcode{EDQUOT} \textit{Quota exceeded}.] Si è ecceduta la quota di disco
dell'utente.
-\item \errcode{ESTALE} \textit{Stale NFS file handle}. Indica un problema
+\item[\errcode{ESTALE} \textit{Stale NFS file handle}.] Indica un problema
interno a NFS causato da cambiamenti del filesystem del sistema remoto. Per
recuperare questa condizione in genere è necessario smontare e rimontare il
filesystem NFS.
-\item \errcode{EREMOTE} \textit{Object is remote}. Si è fatto un tentativo di
+\item[\errcode{EREMOTE} \textit{Object is remote}.] Si è fatto un tentativo di
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
+\item[\errcode{ENOLCK} \textit{No locks available}.] È usato dalle utilità per
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.
-\item \errcode{EFTYPE} \textit{Inappropriate file type or format}. Il file è
+\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
cerca di impostare lo \itindex{sticky~bit} \textit{sticky bit} su un file che
non è una directory.
-\end{description}
-
+\end{basedescript}
\section{Gli errori dei processi}
\label{sec:err_proc_errors}
-In questa sezione sono raccolti i codici restituiti dalle funzioni di libreria
+In questa sezione sono raccolti i codici restituiti dalle \textit{system call}
attinenti ad errori che riguardano operazioni specifiche relative alla
gestione dei processi.
-\begin{description}
-\item \errcode{ESRCH} \textit{No process matches the specified process ID}.
+\begin{basedescript}{\desclabelwidth{2.cm}\desclabelstyle{\nextlinelabel}}
+\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
+\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
+ troppa memoria.
+\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
+\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{basedescript}
\section{Gli errori di rete}
\label{sec:err_network}
-In questa sezione sono raccolti i codici restituiti dalle funzioni di libreria
+In questa sezione sono raccolti i codici restituiti dalle \textit{system call}
attinenti ad errori che riguardano operazioni specifiche relative alla
gestione dei socket e delle connessioni di rete.
-
-\begin{description}
-\item \errcode{ENOTSOCK} \textit{Socket operation on non-socket}. Si è tentata
- un'operazione su un file descriptor che non è un socket quando invece era
- richiesto un socket.
-\item \errcode{EMSGSIZE} \textit{Message too long}. Le dimensioni di un
+\begin{basedescript}{\desclabelwidth{2.cm}\desclabelstyle{\nextlinelabel}}
+\item[\errcode{ENOTSOCK} \textit{Socket operation on non-socket}.] Si è
+ tentata un'operazione su un file descriptor che non è un socket quando
+ invece era richiesto un socket.
+\item[\errcode{EMSGSIZE} \textit{Message too long}.] Le dimensioni di un
messaggio inviato su un socket sono eccedono la massima lunghezza supportata.
-\item \errcode{EPROTOTYPE} \textit{Protocol wrong type for socket}. Protocollo
- sbagliato per il socket. Il socket usato non supporta il protocollo di
- comunicazione richiesto.
-\item \errcode{ENOPROTOOPT} \textit{Protocol not available}. Protocollo non
+\item[\errcode{EPROTOTYPE} \textit{Protocol wrong type for socket}.]
+ Protocollo sbagliato per il socket. Il socket usato non supporta il
+ protocollo di comunicazione richiesto.
+\item[\errcode{ENOPROTOOPT} \textit{Protocol not available}.] Protocollo non
disponibile. Si è richiesta un'opzione per il socket non disponibile con il
protocollo usato.
-\item \errcode{EPROTONOSUPPORT} \textit{Protocol not supported}. Protocollo non
- supportato. Il tipo di socket non supporta il protocollo richiesto (un
+\item[\errcode{EPROTONOSUPPORT} \textit{Protocol not supported}.] Protocollo
+ non supportato. Il tipo di socket non supporta il protocollo richiesto (un
probabile errore nella specificazione del protocollo).
-\item \errcode{ESOCKTNOSUPPORT} \textit{Socket type not supported}. Socket non
- supportato. Il tipo di socket scelto non è supportato.
-\item \errcode{EOPNOTSUPP} \textit{Operation not supported on transport
- endpoint}. L'operazione richiesta non è supportata. Alcune funzioni non
+\item[\errcode{ESOCKTNOSUPPORT} \textit{Socket type not supported}.] Socket
+ non supportato. Il tipo di socket scelto non è supportato.
+\item[\errcode{EOPNOTSUPP} \textit{Operation not supported on transport
+ endpoint}.] L'operazione richiesta non è supportata. Alcune funzioni non
hanno senso per tutti i tipi di socket, ed altre non sono implementate per
tutti i protocolli di trasmissione. Questo errore quando un socket non
supporta una particolare operazione, e costituisce una indicazione generica
che il server non sa cosa fare per la chiamata effettuata.
-\item \errcode{EPFNOSUPPORT} \textit{Protocol family not supported}. Famiglia
+\item[\errcode{EPFNOSUPPORT} \textit{Protocol family not supported}.] Famiglia
di protocolli non supportata. La famiglia di protocolli richiesta non è
supportata.
-\item \errcode{EAFNOSUPPORT} \textit{Address family not supported by protocol}.
- 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
+\item[\errcode{EAFNOSUPPORT} \textit{Address family not supported by
+ protocol}.] 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 è 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
+\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 è
+\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{ENETUNREACH} \textit{Network is unreachable}.] L'operazione è
fallita perché l'indirizzo richiesto è irraggiungibile (ad esempio la
sottorete della stazione remota è irraggiungibile).
-\item \errcode{ENETRESET} \textit{Network dropped connection because of reset}.
- Una connessione è stata cancellata perché l'host remoto è caduto.
-\item \errcode{ECONNABORTED} \textit{Software caused connection abort}. Una
+\item[\errcode{ENETRESET} \textit{Network dropped connection because of
+ reset}.] Una connessione è stata cancellata perché l'host remoto è
+ caduto.
+\item[\errcode{ECONNABORTED} \textit{Software caused connection abort}.] Una
connessione è stata abortita localmente.
-\item \errcode{ECONNRESET} \textit{Connection reset by peer}. Una connessione è
- stata chiusa per ragioni fuori dal controllo dell'host locale, come il
+\item[\errcode{ECONNRESET} \textit{Connection reset by peer}.] Una connessione
+ è stata chiusa per ragioni fuori dal controllo dell'host locale, come il
riavvio di una macchina remota o un qualche errore non recuperabile sul
protocollo.
-\item \errcode{ENOBUFS} \textit{No buffer space available}. Tutti i buffer per
+\item[\errcode{ENOBUFS} \textit{No buffer space available}.] Tutti i buffer per
le operazioni di I/O del kernel sono occupati. In generale questo errore è
sinonimo di \errcode{ENOMEM}, ma attiene alle funzioni di input/output. In
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 è già connesso.
-\item \errcode{ENOTCONN} \textit{Transport endpoint is not connected}. Il
+\item[\errcode{EISCONN} \textit{Transport endpoint is already connected}.] Si
+ è 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
destinazione. Nel caso di socket senza connessione (ad esempio socket UDP)
l'errore che si ottiene è \errcode{EDESTADDRREQ}.
-\item \errcode{EDESTADDRREQ} \textit{Destination address required}. Non c'è un
- indirizzo di destinazione predefinito per il socket. Si ottiene questo
+\item[\errcode{EDESTADDRREQ} \textit{Destination address required}.] Non c'è
+ un indirizzo di destinazione predefinito per il socket. Si ottiene questo
errore mandando dato su un socket senza connessione senza averne prima
specificato una destinazione.
-\item \errcode{ESHUTDOWN} \textit{Cannot send after transport endpoint
- shutdown}. Il socket su cui si cerca di inviare dei dati ha avuto uno
+\item[\errcode{ESHUTDOWN} \textit{Cannot send after transport endpoint
+ 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
+\item[\errcode{ETOOMANYREFS} \textit{Too many references: cannot splice}.] La
\acr{glibc} dice ???
-\item \errcode{ETIMEDOUT} \textit{Connection timed out}. Un'operazione sul
+\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{ECONNREFUSED} \textit{Connection refused}.] Un host remoto ha
rifiutato la connessione (in genere dipende dal fatto che non c'è un server
per soddisfare il servizio richiesto).
-\item \errcode{EHOSTDOWN} \textit{Host is down}. L'host remoto di una
+\item[\errcode{EHOSTDOWN} \textit{Host is down}.] L'host remoto di una
connessione è giù.
-\item \errcode{EHOSTUNREACH} \textit{No route to host}. L'host remoto di una
+\item[\errcode{EHOSTUNREACH} \textit{No route to host}.] L'host remoto di una
connessione non è raggiungibile.
-\end{description}
+\end{basedescript}
+
\section{Errori generici}
-In questa sezione sono raccolti i codici restituiti dalle funzioni di libreria
+In questa sezione sono raccolti i codici restituiti dalle \textit{system call}
attinenti ad errori generici, si trovano qui tutti i codici di errore non
specificati nelle sezioni precedenti.
-\begin{description}
-\item \errcode{EINTR} \textit{Interrupted function call}. Una funzione di
+\begin{basedescript}{\desclabelwidth{2.cm}\desclabelstyle{\nextlinelabel}}
+\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, 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
+\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{EDEADLK} \textit{Deadlock avoided}.] L'allocazione di una
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
+\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} (\signal{SIGSEGV}).
-\item \errcode{EINVAL} \textit{Invalid argument}. Errore utilizzato per
+\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{EDOM} \textit{Domain error}.] È usato dalle funzioni matematiche
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
+\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 è
+\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:
\begin{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}. Indica che
+\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
+\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
riportato per operazioni che si dovrebbero sempre bloccare (come per una
l'errore indica che l'operazione è stata avviata correttamente e occorrerà
del tempo perché si possa completare. La ripetizione della chiamata darebbe
luogo ad un errore \errcode{EALREADY}.
-\item \errcode{EALREADY} \textit{Operation already in progress}. L'operazione è
+\item[\errcode{EALREADY} \textit{Operation already in progress}.] L'operazione è
già in corso. Si è tentata un'operazione già in corso su un oggetto posto in
modalità non-bloccante.
-\item \errcode{ENOSYS} \textit{Function not implemented}. Indica che la
+\item[\errcode{ENOSYS} \textit{Function not implemented}.] Indica che la
funzione non è supportata o nelle librerie del C o nel kernel. Può dipendere
sia dalla mancanza di una implementazione, che dal fatto che non si è
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
+\item[\errcode{ENOTSUP} \textit{Not supported}.] Una funzione ritorna questo
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.
-\item \errcode{EILSEQ} \textit{Illegal byte sequence}. Nella decodifica di un
+\item[\errcode{EILSEQ} \textit{Illegal byte sequence}.] Nella decodifica di un
carattere esteso si è avuta una sequenza errata o incompleta o si è
specificato un valore non valido.
-\end{description}
+\end{basedescript}
-\begin{description}
+\begin{basedescript}{\desclabelwidth{2.cm}\desclabelstyle{\nextlinelabel}}
% 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{EPROGMISMATCH} \textit{}.
-%\item \errcode{EPROCUNAVAIL} \textit{}.
-%\item \errcode{EAUTH} \textit{}.
-%\item \errcode{ENEEDAUTH} \textit{}.
-%\item \errcode{EBACKGROUND} \textit{}.
-%\item \errcode{EDIED} \textit{}.
+%\item[\errcode{EBADRPC} \textit{}.]
+%\item[\errcode{ERPCMISMATCH} \textit{}.]
+%\item[\errcode{EPROGUNAVAIL} \textit{}.]
+%\item[\errcode{EPROGMISMATCH} \textit{}.]
+%\item[\errcode{EPROCUNAVAIL} \textit{}.]
+%\item[\errcode{EAUTH} \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{EGRATUITOUS} \textit{} roba di Hurd, pare.
+%\item[\errcode{ED} \textit{}.]
+%\item[\errcode{EGREGIOUS} \textit{}.]
+%\item[\errcode{EIEIO} \textit{}.]
+%\item[\errcode{EGRATUITOUS} \textit{} roba di Hurd, pare.
-\item \errcode{EBADMSG} \textit{Not a data message}. Definito da POSIX come
+\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
+\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} a cui si fa riferimento è stato cancellato.
-\item \errcode{ENODATA} \textit{No data available}. Viene indicato da POSIX
+\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
+\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
+\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
+\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.
-\item \errcode{ENOSR} \textit{Out of streams resources}. Errore relativo agli
+\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}.} è
+ confusi con gli \textit{stream} di sez.~\ref{sec:files_std_interface}.} è
interfaccia di programmazione originaria di System V, che non è implementata
da Linux, per cui questo errore non viene utilizzato.
-\item \errcode{ENOSTR} \textit{Device not a stream}. Altro errore relativo
+\item[\errcode{ENOSTR} \textit{Device not a stream}.] Altro errore relativo
agli \textit{STREAMS}, anch'esso non utilizzato da Linux.
-\item \errcode{EOVERFLOW} \textit{Value too large for defined data type}. Si è
+\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
+\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
+\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{basedescript}
% 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}.
+% \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}