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