Altro link per O_TMPFILE
[gapil.git] / fileio.tex
index 6c0a30e45472a9b711b7f509635d5e5fcdf81474..75d5fb6589a1f227d6b0ce98cc50edadaf4632be 100644 (file)
@@ -1,6 +1,6 @@
 %% fileio.tex (merge fileunix.tex - filestd.tex)
 %%
-%% Copyright (C) 2000-2012 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2013 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
@@ -121,13 +121,14 @@ che il kernel mantiene per ciascun file e ciascun processo.
 
 Come si può notare alla fine il collegamento che consente di porre in
 relazione i file ed i processi è effettuato attraverso i dati mantenuti nella
-struttura \kstruct{files\_struct}, essa infatti contiene alcune informazioni
+struttura \kstruct{files\_struct} essa infatti contiene alcune informazioni
 essenziali come:
 \begin{itemize*}
 \item i flag relativi ai file aperti dal processo.
 \item il numero di file aperti dal processo.
-\item una tabella di puntatori alla relativa voce nella \itindex{file~table}
-  \textit{file table} per ciascun file aperto.
+\item la \itindex{file~descriptor~table} \textit{file descriptor table}, una
+  tabella con i puntatori, per ciascun file aperto, alla relativa voce nella
+  \itindex{file~table} \textit{file table}.
 \end{itemize*}
 
 In questa infrastruttura un \textit{file descriptor} non è altro che l'intero
@@ -178,7 +179,7 @@ tab.~\ref{tab:file_std_files}.
                              \itindex{standard~output} \textit{standard
                                output}.\\
     \const{STDERR\_FILENO} & \textit{file descriptor} dello \textit{standard
-      error}\\
+      error}.\\
     \hline
   \end{tabular}
   \caption{Costanti definite in \headfile{unistd.h} per i file standard.}
@@ -442,6 +443,11 @@ riletti da \func{fcntl} (vedi sez.~\ref{sec:file_fcntl_ioctl}).
   \label{tab:open_time_flag}
 \end{table}
 
+
+% TODO: aggiungere O_TMPFILE per la creazione di file temporanei senza che
+% questi appaiano sul filesystem, introdotto con il 3.11, vedi:
+% https://lwn.net/Articles/556512/, http://kernelnewbies.org/Linux_3.11
+
 \footnotetext{acronimo di \itindex{Denial~of~Service~(DoS)} \textit{Denial of
     Service}, si chiamano così attacchi miranti ad impedire un servizio
   causando una qualche forma di carico eccessivo per il sistema, che resta
@@ -495,7 +501,7 @@ si tronca il file con \const{O\_TRUNC} verranno impostati soltanto il
                            e viene emulata, per questo possono verificarsi
                            \itindex{race~condition} \textit{race 
                              condition} con una sovrapposizione dei dati se
-                           più di un processo scrive allo stesso tempo. \\
+                           più di un processo scrive allo stesso tempo.\\
       \const{O\_ASYNC}   & Apre il file per l'I/O in modalità asincrona (vedi
                            sez.~\ref{sec:signal_driven_io}). Quando è
                            impostato viene generato il segnale \signal{SIGIO}
@@ -753,9 +759,9 @@ funzione di sistema \funcd{lseek}, il cui prototipo è:
 {La funzione ritorna il valore della posizione sul file in caso di successo e
   $-1$ per un errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
-    \item[\errcode{ESPIPE}] \param{fd} è una pipe, un socket o una fifo.
     \item[\errcode{EINVAL}] \param{whence} non è un valore valido.
     \item[\errcode{EOVERFLOW}] \param{offset} non può essere rappresentato nel
+    \item[\errcode{ESPIPE}] \param{fd} è una pipe, un socket o una fifo.
       tipo \type{off\_t}.
   \end{errlist}
   ed inoltre \errval{EBADF} nel suo significato generico.}
@@ -805,8 +811,8 @@ posizione corrente nel file con \code{lseek(fd, 0, SEEK\_CUR)}.
                         porta alla fine del file se non ci sono \textit{hole}
                         dopo \param{offset} (dal kernel 3.1).\\ 
     \hline
-  \end{tabular}  \caption{Possibili valori per l'argomento \param{whence} di
-    \func{lseek}.} 
+  \end{tabular}  
+  \caption{Possibili valori per l'argomento \param{whence} di \func{lseek}.} 
   \label{tab:lseek_whence_values}
 \end{table}
 
@@ -1055,7 +1061,7 @@ prototipo è:
 {La funzione ritorna il numero di byte scritti in caso di successo e $-1$ per
   un errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
-  \item[\errcode{EAGAIN}] ci si sarebbe bloccati, ma il file era aperto in
+  \item[\errcode{EAGAIN}] ci siq sarebbe bloccati, ma il file era aperto in
     modalità \const{O\_NONBLOCK}.
   \item[\errcode{EFBIG}] si è cercato di scrivere oltre la dimensione massima
     consentita dal filesystem o il limite per le dimensioni dei file del
@@ -1487,7 +1493,7 @@ prototipi sono:
   \item[\errcode{EINVAL}] \param{fd} è un \index{file!speciali} file speciale
     che non supporta la sincronizzazione.
   \end{errlist}
-  ed inoltre \errval{EBADF}, \errval{EROFS} e \errval{EIO} nel loro
+  ed inoltre \errval{EBADF}, \errval{EIO} e \errval{EROFS} nel loro
   significato generico.}
 \end{funcproto}
 
@@ -1694,6 +1700,8 @@ anche l'aggiunta di un ulteriore argomento finale, \param{flags}.
 
 
 % TODO manca prototipo di linkat, verificare se metterlo o metter menzione
+% altre modifiche al riguardo nel 3.11 (AT_EMPTY_PATH?) vedi
+% http://lwn.net/Articles/562488/ 
 % TODO manca prototipo di utimensat, verificare se metterlo o metter menzione
 
 Per tutte le funzioni che lo prevedono, a parte \func{unlinkat} e
@@ -2258,11 +2266,11 @@ per compiere operazioni specializzate; il suo prototipo è:
   sempre $-1$ per un errore, nel qual caso \var{errno} assumerà uno dei
   valori:
   \begin{errlist}
+  \item[\errcode{EINVAL}] gli argomenti \param{request} o \param{argp} non sono
+    validi.
   \item[\errcode{ENOTTY}] il file \param{fd} non è associato con un
     dispositivo, o la richiesta non è applicabile all'oggetto a cui fa
     riferimento \param{fd}.
-  \item[\errcode{EINVAL}] gli argomenti \param{request} o \param{argp} non sono
-    validi.
   \end{errlist}
   ed inoltre \errval{EBADF} e \errval{EFAULT} nel loro significato generico.}
 \end{funcproto}
@@ -3595,7 +3603,7 @@ specificati in questo ordine:
     \textbf{Valore} & \textbf{Significato}\\
     \hline
     \hline
-    \val{\#} & Chiede la conversione in forma alternativa. \\
+    \val{\#} & Chiede la conversione in forma alternativa.\\
     \val{0}  & La conversione è riempita con zeri alla sinistra del valore.\\
     \val{-}  & La conversione viene allineata a sinistra sul bordo del campo.\\
     \val{' '}& Mette uno spazio prima di un numero con segno di valore