7cf46fc6c397987161df56deef30d6ef3870a7b8
[gapil.git] / errors.tex
1 %% errors.tex
2 %%
3 %% Copyright (C) 2000-2012 Simone Piccardi.  Permission is granted to
4 %% copy, distribute and/or modify this document under the terms of the GNU Free
5 %% Documentation License, Version 1.1 or any later version published by the
6 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
7 %% with no Front-Cover Texts, and with no Back-Cover Texts.  A copy of the
8 %% license is included in the section entitled "GNU Free Documentation
9 %% License".
10 %%
11
12 \chapter{I codici di errore}
13 \label{cha:errors}
14
15 Si riportano in questa appendice tutti i codici di errore. Essi sono
16 accessibili attraverso l'inclusione del file di header \headfile{errno.h}, che
17 definisce anche la \index{variabili!globali} variabile globale
18 \var{errno}. Per ogni errore definito riporteremo la stringa stampata da
19 \func{perror} ed una breve spiegazione. Si tenga presente che spiegazioni più
20 particolareggiate del significato dell'errore, qualora necessarie per casi
21 specifici, possono essere trovate nella descrizione del prototipo della
22 funzione per cui detto errore si è verificato.
23
24 I codici di errore sono riportati come costanti di tipo \ctyp{int}, i valori
25 delle costanti sono definiti da macro di preprocessore nel file citato, e
26 possono variare da architettura a architettura; è pertanto necessario
27 riferirsi ad essi tramite i nomi simbolici. Le funzioni \func{perror} e
28 \func{strerror} (vedi sez.~\ref{sec:sys_strerror}) possono essere usate per
29 ottenere dei messaggi di errore più espliciti.
30
31
32 \section{Gli errori dei file}
33 \label{sec:err_file_errors}
34
35 In questa sezione sono raccolti i codici restituiti dalle \textit{system call}
36 attinenti ad errori che riguardano operazioni specifiche relative alla
37 gestione dei file.
38
39 \begin{basedescript}{\desclabelwidth{2.cm}\desclabelstyle{\nextlinelabel}}
40 \item[\errcode{EPERM} \textit{Operation not permitted}.] L'operazione non è
41   permessa: solo il proprietario del file o un processo con sufficienti
42   privilegi può eseguire l'operazione.
43 \item[\errcode{ENOENT} \textit{No such file or directory}.] Il file indicato
44   dal \itindex{pathname} \textit{pathname} non esiste: o una delle componenti
45   non esiste o il \textit{pathname} contiene un link simbolico spezzato.
46   Errore tipico di un riferimento ad un file che si suppone erroneamente
47   essere esistente.
48 \item[\errcode{EIO} \textit{Input/output error}.] Errore di input/output:
49   usato per riportare errori hardware in lettura/scrittura su un dispositivo.
50 \item[\errcode{ENXIO} \textit{No such device or address}.] Dispositivo
51   inesistente: il sistema ha tentato di usare un dispositivo attraverso il
52   file specificato, ma non lo ha trovato. Può significare che il file di
53   dispositivo non è corretto, che il modulo relativo non è stato caricato nel
54   kernel, o che il dispositivo è fisicamente assente o non funzionante.
55 \item[\errcode{ENOEXEC} \textit{Invalid executable file format}.] Il file non
56   ha un formato eseguibile, è un errore riscontrato dalle funzioni
57   \func{exec}.
58 \item[\errcode{EBADF} \textit{Bad file descriptor}.] File descriptor non
59   valido: si è usato un file descriptor inesistente, o aperto in sola lettura
60   per scrivere, o viceversa, o si è cercato di eseguire un'operazione non
61   consentita per quel tipo di file descriptor.
62 \item[\errcode{EACCES} \textit{Permission denied}.] Permesso negato; l'accesso
63   al file o alla directory non è consentito: i permessi del file o della
64   directory non consentono l'operazione richiesta.
65 \item[\errcode{ELOOP} \textit{Too many symbolic links encountered}.] Ci sono
66   troppi link simbolici nella risoluzione di un
67   \itindex{pathname} \textit{pathname}.
68 \item[\errcode{ENAMETOOLONG} \textit{File name too long}.] Si è indicato un
69   \itindex{pathname} \textit{pathname} troppo lungo per un file o una
70   directory.
71 \item[\errcode{ENOTBLK} \textit{Block device required}.] Si è specificato un
72   file che non è un \textit{block device} in un contesto in cui era necessario
73   specificare un \textit{block device} (ad esempio si è tentato di montare un
74   file ordinario).
75 \item[\errcode{EEXIST} \textit{File exists}.] Si è specificato un file
76   esistente in un contesto in cui ha senso solo specificare un nuovo file.
77 \item[\errcode{EBUSY} \textit{Resource busy}.] Una risorsa di sistema che non
78   può essere condivisa è occupata. Ad esempio si è tentato di cancellare la
79   directory su cui si è montato un filesystem.
80 \item[\errcode{EXDEV} \textit{Cross-device link}.] Si è tentato di creare un
81   link diretto che attraversa due filesystem differenti.
82 \item[\errcode{ENODEV} \textit{No such device}.] Si è indicato un tipo di
83   device sbagliato ad una funzione che ne richiede uno specifico.
84 \item[\errcode{ENOTDIR} \textit{Not a directory}.] Si è specificato un file
85   che non è una directory in una operazione che richiede una directory.
86 \item[\errcode{EISDIR} \textit{Is a directory}.] Il file specificato è una
87   directory; non può essere aperto in scrittura, né si possono creare o
88   rimuovere link diretti ad essa.
89 \item[\errcode{EMFILE} \textit{Too many open files}.] Il processo corrente ha
90   troppi file aperti e non può aprirne altri. Anche i descrittori duplicati ed
91   i socket vengono tenuti in conto.\footnote{il numero massimo di file aperti
92     è controllabile dal sistema; in Linux si può impostare usando il comando
93     \cmd{ulimit}, esso è in genere indicato dalla costante \const{OPEN\_MAX},
94     vedi sez.~\ref{sec:sys_limits}.}
95 \item[\errcode{ENFILE} \textit{File table overflow}.] Il sistema ha troppi
96   file aperti in contemporanea. Si tenga presente che anche i socket contano
97   come file. Questa è una condizione temporanea, ed è molto difficile che si
98   verifichi nei sistemi moderni.
99 \item[\errcode{ENOTTY} \textit{Not a terminal}.] Si è tentata una operazione
100   di controllo relativa ad un terminale su un file che non lo è.
101 \item[\errcode{ETXTBSY} \textit{Text file busy}.] Si è cercato di eseguire un
102   file che è aperto in scrittura, o di scrivere su un file che è in
103   esecuzione.
104 \item[\errcode{EFBIG} \textit{File too big}.] Si è ecceduto il limite imposto
105   dal sistema sulla dimensione massima che un file può avere.
106 \item[\errcode{ENOSPC} \textit{No space left on device}.] La directory in cui
107   si vuole creare il link non ha spazio per ulteriori voci, o si è cercato di
108   scrivere o di creare un nuovo file su un dispositivo che è già pieno.
109 \item[\errcode{ESPIPE} \textit{Invalid seek operation}.] Si cercato di eseguire
110   una \func{seek} su un file che non supporta questa operazione (ad esempio su
111   una pipe). 
112 \item[\errcode{EROFS} \textit{Read-only file system}.]  Si è cercato di
113   eseguire una operazione di scrittura su un file o una directory che risiede
114   su un filesystem montato un sola lettura.
115 \item[\errcode{EMLINK} \textit{Too many links}]. Ci sono già troppi link al
116   file (il numero massimo è specificato dalla variabile \const{LINK\_MAX},
117   vedi sez.~\ref{sec:sys_limits}).
118 \item[\errcode{EPIPE} \textit{Broken pipe}.] Non c'è un processo che stia
119   leggendo l'altro capo della pipe. Ogni funzione che restituisce questo
120   errore genera anche un segnale \signal{SIGPIPE}, la cui azione predefinita è
121   terminare il programma; pertanto non si potrà vedere questo errore fintanto
122   che \signal{SIGPIPE} non viene gestito o bloccato.
123 \item[\errcode{ENOTEMPTY} \textit{Directory not empty}.] La directory non è
124   vuota quando l'operazione richiede che lo sia. È l'errore tipico che si ha
125   quando si cerca di cancellare una directory contenente dei file.
126 \item[\errcode{EUSERS} \textit{Too many users}.] Troppi utenti, il sistema delle
127   quote rileva troppi utenti nel sistema.
128 \item[\errcode{EDQUOT} \textit{Quota exceeded}.] Si è ecceduta la quota di disco
129   dell'utente.
130 \item[\errcode{ESTALE} \textit{Stale NFS file handle}.] Indica un problema
131   interno a NFS causato da cambiamenti del filesystem del sistema remoto. Per
132   recuperare questa condizione in genere è necessario smontare e rimontare il
133   filesystem NFS.
134 \item[\errcode{EREMOTE} \textit{Object is remote}.] Si è fatto un tentativo di
135   montare via NFS un filesystem remoto con un nome  che già specifica un
136   filesystem montato via NFS. 
137 \item[\errcode{ENOLCK} \textit{No locks available}.] È usato dalle utilità per
138   la gestione del file locking; non viene generato da un sistema GNU, ma può
139   risultare da un'operazione su un server NFS di un altro sistema.
140 \item[\errcode{EFTYPE} \textit{Inappropriate file type or format}.] Il file è
141   di tipo sbagliato rispetto all'operazione richiesta o un file di dati ha un
142   formato sbagliato. Alcuni sistemi restituiscono questo errore quando si
143   cerca di impostare lo \itindex{sticky~bit} \textit{sticky bit} su un file che
144   non è una directory.
145 \end{basedescript}
146
147 \section{Gli errori dei processi}
148 \label{sec:err_proc_errors}
149
150 In questa sezione sono raccolti i codici restituiti dalle \textit{system call}
151 attinenti ad errori che riguardano operazioni specifiche relative alla
152 gestione dei processi.
153
154 \begin{basedescript}{\desclabelwidth{2.cm}\desclabelstyle{\nextlinelabel}}
155 \item[\errcode{ESRCH} \textit{No process matches the specified process ID}.]
156   Non esiste un processo o un \itindex{process~group} \textit{process group}
157   corrispondenti al valore dell'identificativo specificato.
158 \item[\errcode{E2BIG} \textit{Argument list too long}.] La lista degli
159   argomenti passati è troppo lunga: è una condizione prevista da POSIX quando
160   la lista degli argomenti passata ad una delle funzioni \func{exec} occupa
161   troppa memoria.
162 \item[\errcode{ECHILD} \textit{There are no child processes}.] Non esistono
163   processi figli di cui attendere la terminazione. Viene rilevato dalle
164   funzioni \func{wait} e \func{waitpid} (vedi sez.~\ref{sec:proc_wait}).
165 \item[\errcode{EPROCLIM} \textit{Too many processes}.]  Il limite dell'utente
166   per nuovi processi (vedi sez.~\ref{sec:sys_resource_limit}) sarà ecceduto
167   alla prossima \func{fork}; è un codice di errore di BSD, che non viene
168   utilizzato al momento su Linux. 
169 \end{basedescript}
170
171
172 \section{Gli errori di rete}
173 \label{sec:err_network}
174
175 In questa sezione sono raccolti i codici restituiti dalle \textit{system call}
176 attinenti ad errori che riguardano operazioni specifiche relative alla
177 gestione dei socket e delle connessioni di rete.
178
179 \begin{basedescript}{\desclabelwidth{2.cm}\desclabelstyle{\nextlinelabel}}
180 \item[\errcode{ENOTSOCK} \textit{Socket operation on non-socket}.] Si è
181   tentata un'operazione su un file descriptor che non è un socket quando
182   invece era richiesto un socket.
183 \item[\errcode{EMSGSIZE} \textit{Message too long}.] Le dimensioni di un
184   messaggio inviato su un socket sono eccedono la massima lunghezza supportata.
185 \item[\errcode{EPROTOTYPE} \textit{Protocol wrong type for socket}.]
186   Protocollo sbagliato per il socket. Il socket usato non supporta il
187   protocollo di comunicazione richiesto.
188 \item[\errcode{ENOPROTOOPT} \textit{Protocol not available}.] Protocollo non
189   disponibile. Si è richiesta un'opzione per il socket non disponibile con il
190   protocollo usato.
191 \item[\errcode{EPROTONOSUPPORT} \textit{Protocol not supported}.] Protocollo
192   non supportato. Il tipo di socket non supporta il protocollo richiesto (un
193   probabile errore nella specificazione del protocollo).
194 \item[\errcode{ESOCKTNOSUPPORT} \textit{Socket type not supported}.] Socket
195   non supportato. Il tipo di socket scelto non è supportato.
196 \item[\errcode{EOPNOTSUPP} \textit{Operation not supported on transport
197     endpoint}.] L'operazione richiesta non è supportata. Alcune funzioni non
198   hanno senso per tutti i tipi di socket, ed altre non sono implementate per
199   tutti i protocolli di trasmissione. Questo errore quando un socket non
200   supporta una particolare operazione, e costituisce una indicazione generica
201   che il server non sa cosa fare per la chiamata effettuata.
202 \item[\errcode{EPFNOSUPPORT} \textit{Protocol family not supported}.] Famiglia
203   di protocolli non supportata. La famiglia di protocolli richiesta non è
204   supportata.
205 \item[\errcode{EAFNOSUPPORT} \textit{Address family not supported by
206     protocol}.]  Famiglia di indirizzi non supportata. La famiglia di
207   indirizzi richiesta non è supportata, o è inconsistente con il protocollo
208   usato dal socket.
209 \item[\errcode{EADDRINUSE} \textit{Address already in use}.] L'indirizzo del
210   socket richiesto è già utilizzato (ad esempio si è eseguita \func{bind}
211   su una porta già in uso).
212 \item[\errcode{EADDRNOTAVAIL} \textit{Cannot assign requested
213     address}.]  L'indirizzo richiesto non è disponibile (ad esempio si
214   è cercato di dare al socket un nome che non corrisponde al nome
215   della stazione locale), o l'interfaccia richiesta non esiste.
216 \item[\errcode{ENETDOWN} \textit{Network is down}.] L'operazione sul socket è
217   fallita perché la rete è sconnessa.
218 \item[\errcode{ENETUNREACH} \textit{Network is unreachable}.] L'operazione è
219   fallita perché l'indirizzo richiesto è irraggiungibile (ad esempio la
220   sottorete della stazione remota è irraggiungibile).
221 \item[\errcode{ENETRESET} \textit{Network dropped connection because of
222     reset}.]  Una connessione è stata cancellata perché l'host remoto è
223   caduto.
224 \item[\errcode{ECONNABORTED} \textit{Software caused connection abort}.] Una
225   connessione è stata abortita localmente. 
226 \item[\errcode{ECONNRESET} \textit{Connection reset by peer}.] Una connessione
227   è stata chiusa per ragioni fuori dal controllo dell'host locale, come il
228   riavvio di una macchina remota o un qualche errore non recuperabile sul
229   protocollo.
230 \item[\errcode{ENOBUFS} \textit{No buffer space available}.] Tutti i buffer per
231   le operazioni di I/O del kernel sono occupati. In generale questo errore è
232   sinonimo di \errcode{ENOMEM}, ma attiene alle funzioni di input/output. In
233   caso di operazioni sulla rete si può ottenere questo errore invece
234   dell'altro.
235 \item[\errcode{EISCONN} \textit{Transport endpoint is already connected}.] Si
236   è tentato di connettere un socket che è già connesso.
237 \item[\errcode{ENOTCONN} \textit{Transport endpoint is not connected}.] Il
238   socket non è connesso a niente. Si ottiene questo errore quando si cerca di
239   trasmettere dati su un socket senza avere specificato in precedenza la loro
240   destinazione. Nel caso di socket senza connessione (ad esempio socket UDP)
241   l'errore che si ottiene è \errcode{EDESTADDRREQ}.
242 \item[\errcode{EDESTADDRREQ} \textit{Destination address required}.] Non c'è
243   un indirizzo di destinazione predefinito per il socket. Si ottiene questo
244   errore mandando dato su un socket senza connessione senza averne prima
245   specificato una destinazione.
246 \item[\errcode{ESHUTDOWN} \textit{Cannot send after transport endpoint
247     shutdown}.] Il socket su cui si cerca di inviare dei dati ha avuto uno
248   shutdown.
249 \item[\errcode{ETOOMANYREFS} \textit{Too many references: cannot splice}.] La
250   \acr{glibc} dice ???
251 \item[\errcode{ETIMEDOUT} \textit{Connection timed out}.] Un'operazione sul
252   socket non ha avuto risposta entro il periodo di timeout.
253 \item[\errcode{ECONNREFUSED} \textit{Connection refused}.] Un host remoto ha
254   rifiutato la connessione (in genere dipende dal fatto che non c'è un server
255   per soddisfare il servizio richiesto).  
256 \item[\errcode{EHOSTDOWN} \textit{Host is down}.] L'host remoto di una
257   connessione è giù.
258 \item[\errcode{EHOSTUNREACH} \textit{No route to host}.]  L'host remoto di una
259   connessione non è raggiungibile.
260 \end{basedescript}
261
262
263 \section{Errori generici}
264
265 In questa sezione sono raccolti i codici restituiti dalle \textit{system call}
266 attinenti ad errori generici, si trovano qui tutti i codici di errore non
267 specificati nelle sezioni precedenti.
268
269 \begin{basedescript}{\desclabelwidth{2.cm}\desclabelstyle{\nextlinelabel}}
270 \item[\errcode{EINTR} \textit{Interrupted function call}.] Una funzione di
271   libreria è stata interrotta. In genere questo avviene causa di un segnale
272   asincrono al processo che impedisce la conclusione della chiamata, la
273   funzione ritorna con questo errore una volta che si sia correttamente
274   eseguito il gestore del segnale. In questo caso è necessario ripetere la
275   chiamata alla funzione.
276 \item[\errcode{ENOMEM} \textit{No memory available}.] Il kernel non è in grado
277   di allocare ulteriore memoria per completare l'operazione richiesta.
278 \item[\errcode{EDEADLK} \textit{Deadlock avoided}.] L'allocazione di una
279   risorsa avrebbe causato un \itindex{deadlock} \textit{deadlock}. Non sempre
280   il sistema è in grado di riconoscere queste situazioni, nel qual caso si
281   avrebbe il blocco.
282 \item[\errcode{EFAULT} \textit{Bad address}.] Una stringa passata come
283   argomento è fuori dello spazio di indirizzi del processo, in genere questa
284   situazione provoca direttamente l'emissione di un segnale di
285   \itindex{segment~violation} \textit{segment violation} (\signal{SIGSEGV}).
286 \item[\errcode{EINVAL} \textit{Invalid argument}.] Errore utilizzato per
287   segnalare vari tipi di problemi dovuti all'aver passato un argomento
288   sbagliato ad una funzione di libreria.
289 \item[\errcode{EDOM} \textit{Domain error}.] È usato dalle funzioni matematiche
290   quando il valore di un argomento è al di fuori dell'intervallo in cui esse
291   sono definite.
292 \item[\errcode{ERANGE} \textit{Range error}.] È usato dalle funzioni
293   matematiche quando il risultato dell'operazione non è rappresentabile nel
294   valore di ritorno a causa di un overflow o di un underflow.
295 \item[\errcode{EAGAIN} \textit{Resource temporarily unavailable}.] La funzione è
296   fallita ma potrebbe funzionare se la chiamata fosse ripetuta. Questo errore
297   accade in due tipologie di situazioni:
298   \begin{itemize}
299   \item Si è effettuata un'operazione che si sarebbe bloccata su un oggetto
300     che è stato posto in modalità non bloccante. Nei vecchi sistemi questo era
301     un codice diverso, \errcode{EWOULDBLOCK}. In genere questo ha a che fare
302     con file o socket, per i quali si può usare la funzione \func{select} per
303     vedere quando l'operazione richiesta (lettura, scrittura o connessione)
304     diventa possibile.
305   \item Indica la carenza di una risorsa di sistema che non è al momento
306     disponibile (ad esempio \func{fork} può fallire con questo errore se si è
307     esaurito il numero di processi contemporanei disponibili). La ripetizione
308     della chiamata in un periodo successivo, in cui la carenza della risorsa
309     richiesta può essersi attenuata, può avere successo. Questo tipo di
310     carenza è spesso indice di qualcosa che non va nel sistema, è pertanto
311     opportuno segnalare esplicitamente questo tipo di errori.
312   \end{itemize}
313 \item[\errcode{EWOULDBLOCK} \textit{Operation would block}.] Indica che
314   l'operazione richiesta si bloccherebbe, ad esempio se si apre un file in
315   modalità non bloccante, una \func{read} restituirebbe questo errore per
316   indicare che non ci sono dati; in Linux è identico a \errcode{EAGAIN}, ma in
317   altri sistemi può essere specificato un valore diverso.
318 \item[\errcode{EINPROGRESS} \textit{Operation now in progress}.] Operazione in
319   corso. Un'operazione che non può essere completata immediatamente è stata
320   avviata su un oggetto posto in modalità non-bloccante. Questo errore viene
321   riportato per operazioni che si dovrebbero sempre bloccare (come per una
322   \func{connect}) e che pertanto non possono riportare \errcode{EAGAIN},
323   l'errore indica che l'operazione è stata avviata correttamente e occorrerà
324   del tempo perché si possa completare. La ripetizione della chiamata darebbe
325   luogo ad un errore \errcode{EALREADY}.
326 \item[\errcode{EALREADY} \textit{Operation already in progress}.] L'operazione è
327   già in corso. Si è tentata un'operazione già in corso su un oggetto posto in
328   modalità non-bloccante.
329 \item[\errcode{ENOSYS} \textit{Function not implemented}.] Indica che la
330   funzione non è supportata o nelle librerie del C o nel kernel. Può dipendere
331   sia dalla mancanza di una implementazione, che dal fatto che non si è
332   abilitato l'opportuno supporto nel kernel; nel caso di Linux questo può
333   voler dire anche che un modulo necessario non è stato caricato nel sistema.
334 \item[\errcode{ENOTSUP} \textit{Not supported}.] Una funzione ritorna questo
335   errore quando gli argomenti sono validi ma l'operazione richiesta non è
336   supportata. Questo significa che la funzione non implementa quel particolare
337   comando o opzione o che, in caso di oggetti specifici (file descriptor o
338   altro) non è in grado di supportare i parametri richiesti.
339 \item[\errcode{EILSEQ} \textit{Illegal byte sequence}.] Nella decodifica di un
340   carattere esteso si è avuta una sequenza errata o incompleta o si è
341   specificato un valore non valido.
342 \end{basedescript}
343
344
345 \begin{basedescript}{\desclabelwidth{2.cm}\desclabelstyle{\nextlinelabel}}
346 % definiti nel manuale delle glibc ma inesistenti in linux/errno.h
347 %\item[\errcode{EBADRPC} \textit{}.] 
348 %\item[\errcode{ERPCMISMATCH} \textit{}.] 
349 %\item[\errcode{EPROGUNAVAIL} \textit{}.] 
350 %\item[\errcode{EPROGMISMATCH} \textit{}.] 
351 %\item[\errcode{EPROCUNAVAIL} \textit{}.] 
352 %\item[\errcode{EAUTH} \textit{}.] 
353 %\item[\errcode{ENEEDAUTH} \textit{}.] 
354 %\item[\errcode{EBACKGROUND} \textit{}.] 
355 %\item[\errcode{EDIED} \textit{}.] 
356 % questi sembrano scherzi, sempre dal manuale delle glibc...
357 %\item[\errcode{ED} \textit{}.] 
358 %\item[\errcode{EGREGIOUS} \textit{}.] 
359 %\item[\errcode{EIEIO} \textit{}.] 
360 %\item[\errcode{EGRATUITOUS} \textit{} roba di Hurd, pare. 
361
362
363 \item[\errcode{EBADMSG} \textit{Not a data message}.] Definito da POSIX come
364 errore che arriva ad una funzione di lettura che opera su uno stream. Non
365 essendo gli stream definiti su Linux il kernel non genera mai questo tipo di
366 messaggio. 
367
368 \item[\errcode{EMULTIHOP} \textit{Multihop attempted}.] Definito da POSIX come
369   errore dovuto all'accesso a file remoti attraverso più macchine, quando ciò
370   non è consentito. Non viene mai generato su Linux.
371
372 \item[\errcode{EIDRM} \textit{Identifier removed}.] Indica che l'oggetto del
373   \textit{SysV IPC} a cui si fa riferimento è stato cancellato.
374
375 \item[\errcode{ENODATA} \textit{No data available}.] Viene indicato da POSIX
376   come restituito da una \func{read} eseguita su un file descriptor in
377   modalità non bloccante quando non ci sono dati. In realtà in questo caso su
378   Linux viene utilizzato \errcode{EAGAIN}. Lo stesso valore valore però viene
379   usato come sinonimo di \errcode{ENOATTR}. 
380
381 \item[\errcode{ENOATTR} \textit{No such attribute}.] È un codice di errore
382   specifico di Linux utilizzato dalle funzioni per la gestione degli attributi
383   estesi dei file (vedi sez.~\ref{sec:file_xattr}) quando il nome
384   dell'attributo richiesto non viene trovato.
385
386 \item[\errcode{ENOLINK} \textit{Link has been severed}.] È un errore il cui
387   valore è indicato come \textsl{riservato} nelle \textit{Single Unix
388     Specification}. Dovrebbe indicare l'impossibilità di accedere ad un file a
389   causa di un errore sul collegamento di rete, ma non ci sono indicazioni
390   precise del suo utilizzo. Per quanto riguarda Linux viene riportato nei
391   sorgenti del kernel in alcune operazioni relative ad operazioni di rete. 
392
393 \item[\errcode{ENOMSG} \textit{No message of desired type}.] Indica che in una
394   coda di messaggi del \textit{SysV IPC} non è presente nessun messaggio del
395   tipo desiderato.
396
397 \item[\errcode{ENOSR} \textit{Out of streams resources}.] Errore relativo agli
398   \textit{STREAMS}, che indica l'assenza di risorse sufficienti a completare
399   l'operazione richiesta. Quella degli \textit{STREAMS}\footnote{che non vanno
400     confusi con gli \textit{stream} di cap.~\ref{cha:files_std_interface}.}  è
401   interfaccia di programmazione originaria di System V, che non è implementata
402   da Linux, per cui questo errore non viene utilizzato.
403
404 \item[\errcode{ENOSTR} \textit{Device not a stream}.] Altro errore relativo
405   agli \textit{STREAMS}, anch'esso non utilizzato da Linux.
406
407 \item[\errcode{EOVERFLOW} \textit{Value too large for defined data type}.] Si è
408   chiesta la lettura di un dato dal \textit{SysV IPC} con \const{IPC\_STAT} ma
409   il valore eccede la dimensione usata nel buffer di lettura.
410
411 \item[\errcode{EPROTO} \textit{Protocol error}.] Indica che c'è stato un errore
412   nel protocollo di rete usato dal socket; viene usato come errore generico
413   dall'interfaccia degli \textit{STREAMS} quando non si è in grado di
414   specificare un altro codice di errore che esprima più accuratamente la
415   situazione.
416
417 \item[\errcode{ETIME} \textit{Timer expired}.] Indica che è avvenuto un timeout
418   nell'accesso ad una risorsa (ad esempio un semaforo). Compare nei sorgenti
419   del kernel (in particolare per le funzioni relativa al bus USB) come
420   indicazione di una mancata risposta di un dispositivo, con una descrizione
421   alternativa di \textit{Device did not respond}.
422 \end{basedescript}
423
424
425
426 % \section{Errori del kernel}
427 % \label{sec:err_kernel_err}
428
429 % In questa sezione sono raccolti i codici di errore interni del kernel. Non
430 % sono usati dalle funzioni di libreria, ma vengono riportati da alcune system
431 % call 
432 % TODO verificare i dettagli degli errori del kernel, eventualmente cassare.
433
434 % \begin{description}
435 % \item[\errcode{ERESTART} \textit{Interrupted system call should be restarted}.] 
436 % \item[\errcode{ECHRNG} \textit{Channel number out of range}.] 
437 % \item[\errcode{EL2NSYNC} \textit{Level 2 not synchronized}.] 
438 % \item[\errcode{EL3HLT} \textit{Level 3 halted}.] 
439 % \item[\errcode{EL3RST} \textit{Level 3 reset}.] 
440 % \item[\errcode{ELNRNG} \textit{Link number out of range}.] 
441 % \item[\errcode{EUNATCH} \textit{Protocol driver not attached}.] 
442 % \item[\errcode{ENOCSI} \textit{No CSI structure available}.] 
443 % \item[\errcode{EL2HLT} \textit{Level 2 halted}.] 
444 % \item[\errcode{EBADE} \textit{Invalid exchange}.] 
445 % \item[\errcode{EBADR} \textit{Invalid request descriptor}.] 
446 % \item[\errcode{EXFULL} \textit{Exchange full}.] 
447 % \item[\errcode{ENOANO} \textit{No anode}.] 
448 % \item[\errcode{EBADRQC} \textit{Invalid request code}.] 
449 % \item[\errcode{EBADSLT} \textit{Invalid slot}.] 
450 % \item[\errcode{EDEADLOCK} Identico a \errcode{EDEADLK}.] 
451 % \item[\errcode{EBFONT} \textit{Bad font file format}.] 
452 % \item[\errcode{ENONET} \textit{Machine is not on the network}.] 
453 % \item[\errcode{ENOPKG} \textit{Package not installed}.] 
454 % \item[\errcode{EADV} \textit{Advertise error}.] 
455 % \item[\errcode{ESRMNT} \textit{Srmount error}.] 
456 % \item[\errcode{ECOMM} \textit{Communication error on send}.] 
457 % \item[\errcode{EDOTDOT} \textit{RFS specific error}.] 
458 % \item[\errcode{ENOTUNIQ} \textit{Name not unique on network}.] 
459 % \item[\errcode{EBADFD} \textit{File descriptor in bad state}.] 
460 % \item[\errcode{EREMCHG} \textit{Remote address changed}.] 
461 % \item[\errcode{ELIBACC} \textit{Can not access a needed shared library}.] 
462 % \item[\errcode{ELIBBAD} \textit{Accessing a corrupted shared library}.] 
463 % \item[\errcode{ELIBSCN} \textit{.lib section in a.out corrupted}.] 
464 % \item[\errcode{ELIBMAX} \textit{Attempting to link in too many shared
465 %     libraries}.]
466 % \item[\errcode{ELIBEXEC} \textit{Cannot exec a shared library directly}.] 
467 % \item[\errcode{ESTRPIPE} \textit{Streams pipe error}.] 
468 % \item[\errcode{EUCLEAN} \textit{Structure needs cleaning}.] 
469 % \item[\errcode{ENAVAIL} \textit{No XENIX semaphores available}.] 
470 % \item[\errcode{EISNAM} \textit{Is a named type file}.] 
471 % \item[\errcode{EREMOTEIO} \textit{Remote I/O error}.] 
472 % \item[\errcode{ENOMEDIUM} \textit{No medium found}.] 
473 % \item[\errcode{EMEDIUMTYPE} \textit{Wrong medium type}.] 
474 % \end{description}
475
476
477 % LocalWords:  header errno perror int strerror sez EPERM Operation not ENOENT
478 % LocalWords:  permitted such pathname EIO error ENXIO device address kernel Is
479 % LocalWords:  ENOEXEC Invalid executable format exec EBADF Bad descriptor Too
480 % LocalWords:  EACCES Permission denied ELOOP many symbolic links encountered
481 % LocalWords:  ENAMETOOLONG name too long ENOTBLK Block required block EEXIST
482 % LocalWords:  exists EBUSY Resource busy filesystem EXDEV ENODEV ENOTDIR files
483 % LocalWords:  EISDIR EMFILE ulimit ENFILE table overflow ENOTTY ETXTBSY Text
484 % LocalWords:  EFBIG big ENOSPC left ESPIPE seek operation EROFS Read only read
485 % LocalWords:  system EMLINK EPIPE Broken SIGPIPE ENOTEMPTY empty EUSERS users
486 % LocalWords:  EDQUOT exceeded ESTALE NFS handle EREMOTE Object is ENOLCK locks
487 % LocalWords:  available locking EFTYPE type sticky ESRCH process matches the
488 % LocalWords:  specified pid Argument list POSIX ECHILD There child processes
489 % LocalWords:  socket ENOTSOCK EMSGSIZE Message EPROTOTYPE Protocol wrong for
490 % LocalWords:  ENOPROTOOPT EPROTONOSUPPORT supported ESOCKTNOSUPPORT EOPNOTSUPP
491 % LocalWords:  transport endpoint EPFNOSUPPORT family EAFNOSUPPORT protocol of
492 % LocalWords:  EADDRINUSE already bind EADDRNOTAVAIL Cannot assign requested to
493 % LocalWords:  ENETDOWN ENETUNREACH unreachable ENETRESET dropped connection
494 % LocalWords:  because reset l'host ECONNABORTED caused abort ECONNRESET peer
495 % LocalWords:  dell'host ENOBUFS ENOMEM EISCONN connected ENOTCONN UDP send now
496 % LocalWords:  EDESTADDRREQ Destination ESHUTDOWN after shutdown ETOOMANYREFS
497 % LocalWords:  references cannot splice glibc ETIMEDOUT timed ECONNREFUSED host
498 % LocalWords:  refused EHOSTDOWN EHOSTUNREACH route EINTR Interrupted function
499 % LocalWords:  call memory EDEADLK Deadlock avoided deadlock EFAULT segment IPC
500 % LocalWords:  violation SIGSEGV EINVAL argument EDOM Domain ERANGE underflow
501 % LocalWords:  EAGAIN temporarily unavailable EWOULDBLOCK select fork would has
502 % LocalWords:  EINPROGRESS progress connect EALREADY ENOSYS implemented ENOTSUP
503 % LocalWords:  EILSEQ Illegal sequence EBADMSG message EIDRM Identifier removed
504 % LocalWords:  SysV EMULTIHOP Multihop attempted ENODATA ENOLINK been severed
505 % LocalWords:  ENOMSG desired ENOSR streams resources ENOSTR stream EOVERFLOW
506 % LocalWords:  Value large defined STAT EPROTO ETIME Timer expired group wait
507 % LocalWords:  waitpid Specification cap USB did respond Stale
508
509
510 %%% Local Variables: 
511 %%% mode: latex
512 %%% TeX-master: "gapil"
513 %%% End: