Todo sui futex
[gapil.git] / errors.tex
1 %% errors.tex
2 %%
3 %% Copyright (C) 2000-2019 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 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 è
22 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{1.5cm}\desclabelstyle{\nextlinelabel}}
40 \item[\errcode{EACCES} \textit{Permission denied}.] Permesso negato; l'accesso
41   al file o alla directory non è consentito: i permessi del file o della
42   directory o quelli necessari ad attraversare un \textit{pathname} non
43   consentono l'operazione richiesta. 
44 \item[\errcode{EBADF} \textit{Bad file descriptor}.] File descriptor non
45   valido: si è usato un file descriptor inesistente, o aperto in sola lettura
46   per scrivere, o viceversa, o si è cercato di eseguire un'operazione non
47   consentita per quel tipo di file descriptor.
48 \item[\errcode{EBUSY} \textit{Resource busy}.] Una risorsa di sistema che non
49   può essere condivisa è occupata. Ad esempio si è tentato di cancellare la
50   directory su cui si è montato un filesystem.
51 \item[\errcode{EDQUOT} \textit{Quota exceeded}.] Si è ecceduta la quota di
52   disco dell'utente, usato sia per lo spazio disco che per il numero di
53   \textit{inode}.
54 \item[\errcode{EEXIST} \textit{File exists}.] Si è specificato un file
55   esistente in un contesto in cui ha senso solo specificare un nuovo file.
56 \item[\errcode{EFBIG} \textit{File too big}.] Si è ecceduto il limite imposto
57   dal sistema sulla dimensione massima che un file può avere.
58 \item[\errcode{EFTYPE} \textit{Inappropriate file type or format}.] Il file è
59   di tipo sbagliato rispetto all'operazione richiesta o un file di dati ha un
60   formato sbagliato. Alcuni sistemi restituiscono questo errore quando si
61   cerca di impostare lo \textit{sticky bit} su un file che non è una
62   directory.
63 \item[\errcode{EIO} \textit{Input/output error}.] Errore di input/output:
64   usato per riportare errori hardware in lettura/scrittura su un dispositivo.
65 \item[\errcode{EISDIR} \textit{Is a directory}.] Il file specificato è una
66   directory; non può essere aperto in scrittura, né si possono creare o
67   rimuovere link diretti ad essa.
68 \item[\errcode{ELOOP} \textit{Too many symbolic links encountered}.] Ci sono
69   troppi link simbolici nella risoluzione di un \textit{pathname}.
70 \item[\errcode{EMFILE} \textit{Too many open files}.] Il processo corrente ha
71   troppi file aperti e non può aprirne altri. Anche i descrittori duplicati ed
72   i socket vengono tenuti in conto.\footnote{il numero massimo di file aperti
73     è controllabile dal sistema; in Linux si può impostare usando il comando
74     \cmd{ulimit}, esso è in genere indicato dalla costante \const{OPEN\_MAX},
75     vedi sez.~\ref{sec:sys_limits}.}
76 \item[\errcode{EMLINK} \textit{Too many links}.] Ci sono già troppi link al
77   file, il numero massimo è specificato dalla variabile \const{LINK\_MAX},
78   vedi sez.~\ref{sec:sys_limits}.
79 \item[\errcode{ENAMETOOLONG} \textit{File name too long}.] Si è indicato un
80   \textit{pathname} troppo lungo per un file o una directory.
81 \item[\errcode{ENFILE} \textit{File table overflow}.] Il sistema ha troppi
82   file aperti in contemporanea. Si tenga presente che anche i socket contano
83   come file. Questa è una condizione temporanea, ed è molto difficile che si
84   verifichi nei sistemi moderni.
85 \item[\errcode{ENODEV} \textit{No such device}.] Si è indicato un tipo di
86   device sbagliato ad una funzione che ne richiede uno specifico.
87 \item[\errcode{ENOENT} \textit{No such file or directory}.] Il file indicato
88   dal \textit{pathname} non esiste: o una delle componenti non esiste o il
89   \textit{pathname} contiene un link simbolico spezzato.  Errore tipico di un
90   riferimento ad un file che si suppone erroneamente essere esistente.
91 \item[\errcode{ENOEXEC} \textit{Invalid executable file format}.] Il file non
92   ha un formato eseguibile, è un errore riscontrato dalle funzioni
93   \func{exec}.
94 \item[\errcode{ENOLCK} \textit{No locks available}.] È usato dalle utilità per
95   la gestione del file locking; non viene generato da un sistema GNU, ma può
96   risultare da un'operazione su un server NFS di un altro sistema.
97 \item[\errcode{ENOSPC} \textit{No space left on device}.] La directory in cui
98   si vuole creare il link non ha spazio per ulteriori voci, o si è cercato di
99   scrivere o di creare un nuovo file su un dispositivo che è già pieno.
100 \item[\errcode{ENOTBLK} \textit{Block device required}.] Si è specificato un
101   file che non è un \textit{block device} in un contesto in cui era necessario
102   specificare un \textit{block device} (ad esempio si è tentato di montare un
103   file ordinario).
104 \item[\errcode{ENOTDIR} \textit{Not a directory}.] Si è specificato un file
105   che non è una directory in una operazione che richiede una directory.
106 \item[\errcode{ENOTEMPTY} \textit{Directory not empty}.] La directory non è
107   vuota quando l'operazione richiede che lo sia. È l'errore tipico che si ha
108   quando si cerca di cancellare una directory contenente dei file.
109 \item[\errcode{ENOTTY} \textit{Not a terminal}.] Si è tentata una operazione
110   di controllo relativa ad un terminale su un file che non lo è.
111 \item[\errcode{ENXIO} \textit{No such device or address}.] Dispositivo
112   inesistente: il sistema ha tentato di usare un dispositivo attraverso il
113   file specificato, ma non lo ha trovato. Può significare che il file di
114   dispositivo non è corretto, che il modulo relativo non è stato caricato nel
115   kernel, o che il dispositivo è fisicamente assente o non funzionante.
116 \item[\errcode{EPERM} \textit{Operation not permitted}.] L'operazione non è
117   permessa: solo il proprietario del file o un processo con sufficienti
118   privilegi può eseguire l'operazione.
119 \item[\errcode{EPIPE} \textit{Broken pipe}.] Non c'è un processo che stia
120   leggendo l'altro capo della \textit{pipe}. Ogni funzione che restituisce
121   questo errore genera anche un segnale \signal{SIGPIPE}, la cui azione
122   predefinita è terminare il programma; pertanto non si potrà vedere questo
123   errore fintanto che \signal{SIGPIPE} non viene gestito o bloccato.
124 \item[\errcode{EREMOTE} \textit{Object is remote}.] Si è fatto un tentativo di
125   montare via NFS un filesystem remoto con un nome  che già specifica un
126   filesystem montato via NFS. 
127 \item[\errcode{EROFS} \textit{Read-only file system}.]  Si è cercato di
128   eseguire una operazione di scrittura su un file o una directory che risiede
129   su un filesystem montato un sola lettura.
130 \item[\errcode{ESPIPE} \textit{Invalid seek operation}.] Si cercato di
131   eseguire una \func{lseek} su un file che non supporta questa operazione (ad
132   esempio su una \textit{pipe}, da cui il nome).
133 \item[\errcode{ESTALE} \textit{Stale file handle}.] Indica un problema interno
134   ad un filesyste remoto (in genere con NFS) causato da cambiamenti del
135   filesystem del sistema remoto. Per recuperare questa condizione in genere è
136   necessario smontare e rimontare il filesystem.
137 \item[\errcode{ETXTBSY} \textit{Text file busy}.] Si è cercato di eseguire un
138   file che è aperto in scrittura, o di scrivere su un file che è in
139   esecuzione.
140 \item[\errcode{EUSERS} \textit{Too many users}.] Troppi utenti, il sistema delle
141   quote rileva troppi utenti nel sistema.
142 \item[\errcode{EXDEV} \textit{Cross-device link}.] Si è tentato di creare un
143   link diretto che attraversa due filesystem differenti.
144 \end{basedescript}
145
146 \section{Gli errori dei processi}
147 \label{sec:err_proc_errors}
148
149 In questa sezione sono raccolti i codici restituiti dalle \textit{system call}
150 attinenti ad errori che riguardano operazioni specifiche relative alla
151 gestione dei processi.
152
153 \begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
154 \item[\errcode{E2BIG} \textit{Argument list too long}.] La lista degli
155   argomenti passati è troppo lunga: è una condizione prevista da POSIX quando
156   la lista degli argomenti passata ad una delle funzioni \func{exec} occupa
157   troppa memoria.
158 \item[\errcode{ECHILD} \textit{There are no child processes}.] Non esistono
159   processi figli di cui attendere la terminazione. Viene rilevato dalle
160   funzioni \func{wait} e \func{waitpid} (vedi sez.~\ref{sec:proc_wait}).
161 \item[\errcode{EPROCLIM} \textit{Too many processes}.]  Il limite dell'utente
162   per nuovi processi (vedi sez.~\ref{sec:sys_resource_limit}) sarà ecceduto
163   alla prossima \func{fork}; è un codice di errore di BSD, che non viene
164   utilizzato al momento su Linux. 
165 \item[\errcode{ESRCH} \textit{No process matches the specified process ID}.]
166   Non esiste un processo o un \textit{process group} corrispondenti al valore
167   dell'identificativo specificato.
168 \end{basedescript}
169
170
171 \section{Gli errori di rete}
172 \label{sec:err_network}
173
174 In questa sezione sono raccolti i codici restituiti dalle \textit{system call}
175 attinenti ad errori che riguardano operazioni specifiche relative alla
176 gestione dei socket e delle connessioni di rete.
177
178 \begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
179 \item[\errcode{EADDRINUSE} \textit{Address already in use}.] L'indirizzo del
180   socket richiesto è già utilizzato (ad esempio si è eseguita \func{bind}
181   su una porta già in uso).
182 \item[\errcode{EADDRNOTAVAIL} \textit{Cannot assign requested
183     address}.]  L'indirizzo richiesto non è disponibile (ad esempio si
184   è cercato di dare al socket un nome che non corrisponde al nome
185   della stazione locale), o l'interfaccia richiesta non esiste.
186 \item[\errcode{EAFNOSUPPORT} \textit{Address family not supported by
187     protocol}.]  Famiglia di indirizzi non supportata. La famiglia di
188   indirizzi richiesta non è supportata, o è inconsistente con il protocollo
189   usato dal socket.
190 \item[\errcode{ECONNABORTED} \textit{Software caused connection abort}.] Una
191   connessione è stata abortita localmente. 
192 \item[\errcode{ECONNREFUSED} \textit{Connection refused}.] Un host remoto ha
193   rifiutato la connessione (in genere dipende dal fatto che non c'è un server
194   per soddisfare il servizio richiesto).  
195 \item[\errcode{ECONNRESET} \textit{Connection reset by peer}.] Una connessione
196   è stata chiusa per ragioni fuori dal controllo dell'host locale, come il
197   riavvio di una macchina remota o un qualche errore non recuperabile sul
198   protocollo.
199 \item[\errcode{EDESTADDRREQ} \textit{Destination address required}.] Non c'è
200   un indirizzo di destinazione predefinito per il socket. Si ottiene questo
201   errore mandando dato su un socket senza connessione senza averne prima
202   specificato una destinazione.
203 \item[\errcode{EHOSTDOWN} \textit{Host is down}.] L'host remoto non risponde. 
204 \item[\errcode{EHOSTUNREACH} \textit{No route to host}.] L'host remoto non è
205   raggiungibile. Si ottiene quando non esiste una rotta di rete per arrivare
206   all'host remoto con il protocollo di rete utilizzato.
207 \item[\errcode{EISCONN} \textit{Transport endpoint is already connected}.] Si
208   è tentato di connettere un socket che è già connesso.
209 \item[\errcode{EMSGSIZE} \textit{Message too long}.] Le dimensioni di un
210   messaggio inviato su un socket sono eccedono la massima lunghezza supportata.
211 \item[\errcode{ENETDOWN} \textit{Network is down}.] L'operazione sul socket è
212   fallita perché la rete è sconnessa.
213 \item[\errcode{ENETRESET} \textit{Network dropped connection because of
214     reset}.]  Una connessione è stata cancellata perché l'host remoto è
215   caduto.
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{ENOBUFS} \textit{No buffer space available}.] Tutti i buffer per
220   le operazioni di I/O del kernel sono occupati. In generale questo errore è
221   sinonimo di \errcode{ENOMEM}, ma attiene alle funzioni di input/output. In
222   caso di operazioni sulla rete si può ottenere questo errore invece
223   dell'altro.
224 \item[\errcode{ENOPROTOOPT} \textit{Protocol not available}.] Protocollo non
225   disponibile. Si è richiesta un'opzione per il socket non disponibile con il
226   protocollo usato.
227 \item[\errcode{ENOTCONN} \textit{Transport endpoint is not connected}.] Il
228   socket non è connesso a niente. Si ottiene questo errore quando si cerca di
229   trasmettere dati su un socket senza avere specificato in precedenza la loro
230   destinazione. Nel caso di socket senza connessione (ad esempio socket UDP)
231   l'errore che si ottiene è \errcode{EDESTADDRREQ}.
232 \item[\errcode{ENOTSOCK} \textit{Socket operation on non-socket}.] Si è
233   tentata un'operazione su un file descriptor che non è un socket quando
234   invece era richiesto un socket.
235 \item[\errcode{EOPNOTSUPP} \textit{Operation not supported on transport
236     endpoint}.] L'operazione richiesta non è supportata. Alcune funzioni non
237   hanno senso per tutti i tipi di socket, ed altre non sono implementate per
238   tutti i protocolli di trasmissione. Questo errore quando un socket non
239   supporta una particolare operazione, e costituisce una indicazione generica
240   che il server non sa cosa fare per la chiamata effettuata.
241 \item[\errcode{EPFNOSUPPORT} \textit{Protocol family not supported}.] Famiglia
242   di protocolli non supportata. La famiglia di protocolli richiesta non è
243   supportata.
244 \item[\errcode{EPROTONOSUPPORT} \textit{Protocol not supported}.] Protocollo
245   non supportato. Il tipo di socket non supporta il protocollo richiesto (un
246   probabile errore nella specificazione del protocollo).
247 \item[\errcode{EPROTOTYPE} \textit{Protocol wrong type for socket}.]
248   Protocollo sbagliato per il socket. Il socket usato non supporta il
249   protocollo di comunicazione richiesto.
250 \item[\errcode{ESHUTDOWN} \textit{Cannot send after transport endpoint
251     shutdown}.] Il socket su cui si cerca di inviare dei dati ha avuto uno
252   shutdown.
253 \item[\errcode{ESOCKTNOSUPPORT} \textit{Socket type not supported}.] Socket
254   non supportato. Il tipo di socket scelto non è supportato.
255 \item[\errcode{ETIMEDOUT} \textit{Connection timed out}.] Un'operazione sul
256   socket non ha avuto risposta entro il periodo di timeout.
257 \item[\errcode{ETOOMANYREFS} \textit{Too many references: cannot splice}.] La
258   \acr{glibc} dice ???
259 \end{basedescript}
260
261
262 \section{Errori generici}
263
264 In questa sezione sono raccolti i codici restituiti dalle \textit{system call}
265 attinenti ad errori generici, si trovano qui tutti i codici di errore non
266 specificati nelle sezioni precedenti.
267
268 \begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
269 \item[\errcode{EAGAIN} \textit{Resource temporarily unavailable}.] La funzione
270   è fallita ma potrebbe funzionare se la chiamata fosse ripetuta. Questo
271   errore accade in due tipologie di situazioni:
272   \begin{itemize}
273   \item Si è effettuata un'operazione che si sarebbe bloccata su un oggetto
274     che è stato posto in modalità non bloccante. Nei vecchi sistemi questo era
275     un codice diverso, \errcode{EWOULDBLOCK}. In genere questo ha a che fare
276     con file o socket, per i quali si può usare la funzione \func{select} per
277     vedere quando l'operazione richiesta (lettura, scrittura o connessione)
278     diventa possibile.
279   \item Indica la carenza di una risorsa di sistema che non è al momento
280     disponibile (ad esempio \func{fork} può fallire con questo errore se si è
281     esaurito il numero di processi contemporanei disponibili). La ripetizione
282     della chiamata in un periodo successivo, in cui la carenza della risorsa
283     richiesta può essersi attenuata, può avere successo. Questo tipo di
284     carenza è spesso indice di qualcosa che non va nel sistema, è pertanto
285     opportuno segnalare esplicitamente questo tipo di errori.
286   \end{itemize}
287 \item[\errcode{EALREADY} \textit{Operation already in progress}.] L'operazione è
288   già in corso. Si è tentata un'operazione già in corso su un oggetto posto in
289   modalità non-bloccante.
290 \item[\errcode{EDEADLK} \textit{Deadlock avoided}.] L'allocazione di una
291   risorsa avrebbe causato un \textit{deadlock}. Non sempre il sistema è in
292   grado di riconoscere queste situazioni, nel qual caso si avrebbe il blocco.
293 \item[\errcode{EFAULT} \textit{Bad address}.] Una stringa passata come
294   argomento è fuori dello spazio di indirizzi del processo, in genere questa
295   situazione provoca direttamente l'emissione di un segnale di \textit{segment
296     violation} (\signal{SIGSEGV}).
297 \item[\errcode{EDOM} \textit{Domain error}.] È usato dalle funzioni matematiche
298   quando il valore di un argomento è al di fuori dell'intervallo in cui esse
299   sono definite.
300 \item[\errcode{EILSEQ} \textit{Illegal byte sequence}.] Nella decodifica di un
301   carattere esteso si è avuta una sequenza errata o incompleta o si è
302   specificato un valore non valido.
303 \item[\errcode{EINPROGRESS} \textit{Operation now in progress}.] Operazione in
304   corso. Un'operazione che non può essere completata immediatamente è stata
305   avviata su un oggetto posto in modalità non-bloccante. Questo errore viene
306   riportato per operazioni che si dovrebbero sempre bloccare (come per una
307   \func{connect}) e che pertanto non possono riportare \errcode{EAGAIN},
308   l'errore indica che l'operazione è stata avviata correttamente e occorrerà
309   del tempo perché si possa completare. La ripetizione della chiamata darebbe
310   luogo ad un errore \errcode{EALREADY}.
311 \item[\errcode{EINTR} \textit{Interrupted function call}.] Una funzione di
312   libreria è stata interrotta. In genere questo avviene causa di un segnale
313   asincrono al processo che impedisce la conclusione della chiamata, la
314   funzione ritorna con questo errore una volta che si sia correttamente
315   eseguito il gestore del segnale. In questo caso è necessario ripetere la
316   chiamata alla funzione.
317 \item[\errcode{EINVAL} \textit{Invalid argument}.] Errore utilizzato per
318   segnalare vari tipi di problemi dovuti all'aver passato un argomento
319   sbagliato ad una funzione di libreria.
320 \item[\errcode{ENOMEM} \textit{No memory available}.] Il kernel non è in grado
321   di allocare ulteriore memoria per completare l'operazione richiesta.
322 \item[\errcode{ENOSYS} \textit{Function not implemented}.] Indica che la
323   funzione non è supportata o nelle librerie del C o nel kernel. Può dipendere
324   sia dalla mancanza di una implementazione, che dal fatto che non si è
325   abilitato l'opportuno supporto nel kernel; nel caso di Linux questo può
326   voler dire anche che un modulo necessario non è stato caricato nel sistema.
327 \item[\errcode{ENOTSUP} \textit{Not supported}.] Una funzione ritorna questo
328   errore quando gli argomenti sono validi ma l'operazione richiesta non è
329   supportata. Questo significa che la funzione non implementa quel particolare
330   comando o opzione o che, in caso di oggetti specifici (file descriptor o
331   altro) non è in grado di supportare i parametri richiesti.
332 \item[\errcode{ERANGE} \textit{Range error}.] È usato dalle funzioni
333   matematiche quando il risultato dell'operazione non è rappresentabile nel
334   valore di ritorno a causa di un overflow o di un underflow.
335 \item[\errcode{EWOULDBLOCK} \textit{Operation would block}.] Indica che
336   l'operazione richiesta si bloccherebbe, ad esempio se si apre un file in
337   modalità non bloccante, una \func{read} restituirebbe questo errore per
338   indicare che non ci sono dati; in Linux è identico a \errcode{EAGAIN}, ma in
339   altri sistemi può essere specificato un valore diverso.
340 \end{basedescript}
341
342
343 \begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
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. 
359
360
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
364 messaggio. 
365
366 \item[\errcode{EIDRM} \textit{Identifier removed}.] Indica che l'oggetto del
367   \textit{SysV IPC} a cui si fa riferimento è stato cancellato.
368
369 \item[\errcode{EMULTIHOP} \textit{Multihop attempted}.] Definito da POSIX come
370   errore dovuto all'accesso a file remoti attraverso più macchine, quando ciò
371   non è consentito. Non viene mai generato su Linux.
372
373 \item[\errcode{ENOATTR} \textit{No such attribute}.] È un codice di errore
374   specifico di Linux utilizzato dalle funzioni per la gestione degli attributi
375   estesi dei file (vedi sez.~\ref{sec:file_xattr}) quando il nome
376   dell'attributo richiesto non viene trovato.
377
378 \item[\errcode{ENODATA} \textit{No data available}.] Viene indicato da POSIX
379   come restituito da una \func{read} eseguita su un file descriptor in
380   modalità non bloccante quando non ci sono dati. In realtà in questo caso su
381   Linux viene utilizzato \errcode{EAGAIN}. Lo stesso valore però viene usato
382   come sinonimo di \errcode{ENOATTR}.
383
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. 
390
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
393   tipo desiderato.
394
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 sez.~\ref{sec:files_std_interface}.}  è
399   interfaccia di programmazione originaria di System V, che non è implementata
400   da Linux, per cui questo errore non viene utilizzato.
401
402 \item[\errcode{ENOSTR} \textit{Device not a stream}.] Altro errore relativo
403   agli \textit{STREAMS}, anch'esso non utilizzato da Linux.
404
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.
408
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
413   situazione.
414
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}.
420 \end{basedescript}
421
422
423
424 % \section{Errori del kernel}
425 % \label{sec:err_kernel_err}
426
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
429 % call 
430 % TODO verificare i dettagli degli errori del kernel, eventualmente cassare.
431
432 % \begin{description}
433
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
450 % \item[\errcode{EBFONT} \textit{Bad font file format}.] 
451 % \item[\errcode{ENONET} \textit{Machine is not on the network}.] 
452 % \item[\errcode{ENOPKG} \textit{Package not installed}.] 
453 % \item[\errcode{EREMOTEIO} \textit{Remote I/O error}.] si ottiene sul bus i2c
454 % se non si ottiene un acknoweledgment della comunicazione con un
455 % corrispondente su bus
456 % \item[\errcode{EADV} \textit{Advertise error}.] errore presumibilmente
457 % obsoleto, relativo a RFS
458 % (\url{https://en.wikipedia.org/wiki/Remote_File_Sharing}) interfaccia per
459 % filesystem remoti basta sugli stream SysV, non presente su Linux.
460 % \item[\errcode{ESRMNT} \textit{Srmount error}.] errore 
461 % obsoleto, relativo a RFS
462 % (\url{https://en.wikipedia.org/wiki/Remote_File_Sharing}) interfaccia per
463 % filesystem remoti basta sugli stream SysV, non presente su Linux.
464 % \item[\errcode{ECOMM} \textit{Communication error on send}.]
465 % \item[\errcode{EDOTDOT} \textit{RFS specific error}.] 
466 % \item[\errcode{ENOTUNIQ} \textit{Name not unique on network}.] 
467 % \item[\errcode{EBADFD} \textit{File descriptor in bad state}.] 
468 % \item[\errcode{EREMCHG} \textit{Remote address changed}.] 
469 % \item[\errcode{ELIBACC} \textit{Can not access a needed shared library}.] 
470 % \item[\errcode{ELIBBAD} \textit{Accessing a corrupted shared library}.] 
471 % \item[\errcode{ELIBSCN} \textit{.lib section in a.out corrupted}.] 
472 % \item[\errcode{ELIBMAX} \textit{Attempting to link in too many shared
473 %     libraries}.]
474 % \item[\errcode{ELIBEXEC} \textit{Cannot exec a shared library directly}.] 
475 % \item[\errcode{ERESTART} \textit{Interrupted system call should be
476 %   restarted}.]
477 % \item[\errcode{ESTRPIPE} \textit{Streams pipe error}.] 
478 % \item[\errcode{EUCLEAN} \textit{Structure needs cleaning}.] 
479 % \item[\errcode{ENOTNAM} \textit{Not a XENIX named type file}.] 
480 % \item[\errcode{ENAVAIL} \textit{No XENIX semaphores available}.] 
481 % \item[\errcode{EISNAM} \textit{Is a named type file}.] 
482 % \item[\errcode{EREMOTEIO} \textit{Remote I/O error}.] 
483 % \item[\errcode{ENOMEDIUM} \textit{No medium found}.] 
484 % \item[\errcode{EMEDIUMTYPE} \textit{Wrong medium type}.]
485 % \item[\errcode{ENOKEY} \textit{Required key not available}.]
486 % \item[\errcode{EKEYEXPIRED} \textit{Key has expired}.]
487 % \item[\errcode{EKEYREVOKED} \textit{Key has been revoked}.]
488 % \item[\errcode{EKEYREJECTED} \textit{Key was rejected by service}.]
489 %/* for robust mutexes */
490 % \item[\errcode{EOWNERDEAD} \textit{Owner died}.]
491 % \item[\errcode{ENOTRECOVERABLE} \textit{State not recoverable}.]
492 % \item[\errcode{ERFKILL} \textit{Operation not possible due to RF-kill}.]
493 % \item[\errcode{EHWPOISON} \textit{Memory page has hardware error}.]
494
495 % \end{description}
496
497
498 % LocalWords:  header errno perror int strerror sez EPERM Operation not ENOENT
499 % LocalWords:  permitted such pathname EIO error ENXIO device address kernel Is
500 % LocalWords:  ENOEXEC Invalid executable format exec EBADF Bad descriptor Too
501 % LocalWords:  EACCES Permission denied ELOOP many symbolic links encountered
502 % LocalWords:  ENAMETOOLONG name too long ENOTBLK Block required block EEXIST
503 % LocalWords:  exists EBUSY Resource busy filesystem EXDEV ENODEV ENOTDIR files
504 % LocalWords:  EISDIR EMFILE ulimit ENFILE table overflow ENOTTY ETXTBSY Text
505 % LocalWords:  EFBIG big ENOSPC left ESPIPE seek operation EROFS Read only read
506 % LocalWords:  system EMLINK EPIPE Broken SIGPIPE ENOTEMPTY empty EUSERS users
507 % LocalWords:  EDQUOT exceeded ESTALE NFS handle EREMOTE Object is ENOLCK locks
508 % LocalWords:  available locking EFTYPE type sticky ESRCH process matches the
509 % LocalWords:  specified pid Argument list POSIX ECHILD There child processes
510 % LocalWords:  socket ENOTSOCK EMSGSIZE Message EPROTOTYPE Protocol wrong for
511 % LocalWords:  ENOPROTOOPT EPROTONOSUPPORT supported ESOCKTNOSUPPORT EOPNOTSUPP
512 % LocalWords:  transport endpoint EPFNOSUPPORT family EAFNOSUPPORT protocol of
513 % LocalWords:  EADDRINUSE already bind EADDRNOTAVAIL Cannot assign requested to
514 % LocalWords:  ENETDOWN ENETUNREACH unreachable ENETRESET dropped connection
515 % LocalWords:  because reset l'host ECONNABORTED caused abort ECONNRESET peer
516 % LocalWords:  dell'host ENOBUFS ENOMEM EISCONN connected ENOTCONN UDP send now
517 % LocalWords:  EDESTADDRREQ Destination ESHUTDOWN after shutdown ETOOMANYREFS
518 % LocalWords:  references cannot splice glibc ETIMEDOUT timed ECONNREFUSED host
519 % LocalWords:  refused EHOSTDOWN EHOSTUNREACH route EINTR Interrupted function
520 % LocalWords:  call memory EDEADLK Deadlock avoided deadlock EFAULT segment IPC
521 % LocalWords:  violation SIGSEGV EINVAL argument EDOM Domain ERANGE underflow
522 % LocalWords:  EAGAIN temporarily unavailable EWOULDBLOCK select fork would has
523 % LocalWords:  EINPROGRESS progress connect EALREADY ENOSYS implemented ENOTSUP
524 % LocalWords:  EILSEQ Illegal sequence EBADMSG message EIDRM Identifier removed
525 % LocalWords:  SysV EMULTIHOP Multihop attempted ENODATA ENOLINK been severed
526 % LocalWords:  ENOMSG desired ENOSR streams resources ENOSTR stream EOVERFLOW
527 % LocalWords:  Value large defined STAT EPROTO ETIME Timer expired group wait
528 % LocalWords:  waitpid Specification cap USB did respond Stale
529
530
531 %%% Local Variables: 
532 %%% mode: latex
533 %%% TeX-master: "gapil"
534 %%% End: