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