Aggiunta figura sullo schema del kernel per il file locking
[gapil.git] / fileunix.tex
index d43019977c905f3e4a6816a6e96c79e5df91f245..bd3ed091fa27e1b6f9a2b66de914992db8be7985 100644 (file)
@@ -138,10 +138,11 @@ posto di questi valori numerici:
   \label{tab:file_std_files}
 \end{table}
 
-In \curfig\ si è utilizzata questa situazione come esempio, facendo
-riferimento ad un programma in cui lo \textit{standard input} è associato ad
-un file mentre lo \textit{standard output} e lo \textit{standard error} sono
-entrambi associati ad un altro file (e quindi utilizzano lo stesso inode).
+In \figref{tab:file_std_files} si è utilizzata questa situazione come esempio,
+facendo riferimento ad un programma in cui lo \textit{standard input} è
+associato ad un file mentre lo \textit{standard output} e lo \textit{standard
+  error} sono entrambi associati ad un altro file (e quindi utilizzano lo
+stesso inode).
 
 Nelle vecchie versioni di Unix (ed anche in Linux fino al kernel 2.0.x) il
 numero di file aperti era anche soggetto ad un limite massimo dato dalle
@@ -183,8 +184,8 @@ prototipo 
   specificati da \var{mode}.
   
   \bodydesc{La funzione ritorna il file descriptor in caso di successo e -1 in
-    caso di errore. In questo caso la variabile \var{errno} viene impostata ad
-    uno dei valori:
+    caso di errore. In questo caso la variabile \var{errno} assumerà uno dei
+    valori:
   \begin{errlist}
   \item[\macro{EEXIST}] \var{pathname} esiste e si è specificato
     \macro{O\_CREAT} e \macro{O\_EXCL}.  
@@ -237,7 +238,7 @@ sempre il file descriptor con il valore pi
     solo per le fifo, torneremo questo in \secref{sec:ipc_named_pipe}). \\
     \macro{O\_NOCTTY} & se \var{pathname} si riferisce ad un device di
     terminale, questo non diventerà il terminale di controllo, anche se il
-    processo non ne ha ancora uno (si veda \secref{sec:sess_xxx}). \\
+    processo non ne ha ancora uno (si veda \secref{sec:sess_ctrl_term}). \\
     \macro{O\_SHLOCK} & opzione di BSD, acquisisce uno shared lock (vedi
     \secref{sec:file_locking}) sul file. Non è disponibile in Linux. \\
     \macro{O\_EXLOCK} & opzione di BSD, acquisisce uno lock esclusivo (vedi
@@ -292,10 +293,10 @@ sempre il file descriptor con il valore pi
   \label{tab:file_open_flags}
 \end{table}
 
-\footnotetext[2]{la man page di \func{open} segnala che questa opzione è
-  difettosa su NFS, e che i programmi che la usano per stabilire un file di
-  lock possono incorrere in una race condition\index{race condition}.  Si
-  consiglia come alternativa di usare un file con un nome univoco e la
+\footnotetext[2]{la pagina di manuale di \func{open} segnala che questa
+  opzione è difettosa su NFS, e che i programmi che la usano per stabilire un
+  file di lock possono incorrere in una race condition\index{race condition}.
+  Si consiglia come alternativa di usare un file con un nome univoco e la
   funzione \func{link} per verificarne l'esistenza.}
 
 \footnotetext[3]{\textit{Denial of Service}, si chiamano così attacchi miranti
@@ -335,7 +336,8 @@ La funzione prevede diverse opzioni, che vengono specificate usando vari bit
 dell'argomento \param{flags}.  Alcuni di questi bit vanno anche a costituire
 il flag di stato del file (o \textit{file status flag}), che è mantenuto nel
 campo \var{f\_flags} della struttura \var{file} (al solito si veda lo schema
-di \curfig).  Essi sono divisi in tre categorie principali:
+di \figref{fig:file_proc_file}).  Essi sono divisi in tre categorie
+principali:
 \begin{itemize}
 \item \textsl{i bit delle modalità di accesso}: specificano con quale modalità
   si accederà al file: i valori possibili sono lettura, scrittura o
@@ -386,7 +388,7 @@ descriptor ritorna disponibile; il suo prototipo 
   Chiude il descrittore \var{fd}. 
   
   \bodydesc{La funzione ritorna 0 in caso di successo e -1 in caso di errore,
-    ed in questo caso \var{errno} è impostata ai valori:
+    ed in questo caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
     \item[\macro{EBADF}]  \var{fd} non è un descrittore valido.
     \item[\macro{EINTR}] la funzione è stata interrotta da un segnale.
@@ -442,8 +444,8 @@ un valore qualsiasi con la funzione \func{lseek}, il cui prototipo 
   Imposta la posizione attuale nel file. 
   
   \bodydesc{La funzione ritorna valore della posizione corrente in caso di
-    successo e -1 in caso di errore nel qual caso \var{errno} viene impostata ad
-    uno dei valori:
+    successo e -1 in caso di errore nel qual caso \var{errno} assumerà uno dei
+    valori:
   \begin{errlist}
     \item[\macro{ESPIPE}] \param{fd} è una pipe, un socket o una fifo.
     \item[\macro{EINVAL}] \param{whence} non è un valore valido.
@@ -503,8 +505,7 @@ utilizzando la funzione \func{read}, il cui prototipo 
   Cerca di leggere \var{count} byte dal file \var{fd} al buffer \var{buf}.
   
   \bodydesc{La funzione ritorna il numero di byte letti in caso di successo e
-    -1 in caso di errore, nel qual caso \var{errno} viene impostata ad uno dei
-    valori:
+    -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
   \item[\macro{EINTR}] la funzione è stata interrotta da un segnale prima di
     aver potuto leggere qualsiasi dato.
@@ -581,8 +582,8 @@ Cerca di leggere \var{count} byte dal file \var{fd}, a partire dalla posizione
 \var{offset}, nel buffer \var{buf}.
   
 \bodydesc{La funzione ritorna il numero di byte letti in caso di successo e -1
-  in caso di errore, nel qual caso \var{errno} viene impostata secondo i valori
-  già visti per \func{read} e \func{lseek}.}
+  in caso di errore, nel qual caso \var{errno} assumerà i valori già visti per
+  \func{read} e \func{lseek}.}
 \end{prototype}
 \noindent che però diventa accessibile solo con la definizione della macro:
 \begin{verbatim}
@@ -608,8 +609,7 @@ funzione \func{write}, il cui prototipo 
   Scrive \var{count} byte dal buffer \var{buf} sul file \var{fd}.
   
   \bodydesc{La funzione ritorna il numero di byte scritti in caso di successo
-    e -1 in caso di errore, nel qual caso \var{errno} viene impostata ad uno dei
-    valori:
+    e -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
   \item[\macro{EINVAL}] \var{fd} è connesso ad un oggetto che non consente la
     scrittura.
@@ -654,8 +654,8 @@ Cerca di scrivere sul file \var{fd}, a partire dalla posizione \var{offset},
 \var{count} byte dal buffer \var{buf}.
   
 \bodydesc{La funzione ritorna il numero di byte letti in caso di successo e -1
-  in caso di errore, nel qual caso \var{errno} viene impostata secondo i valori
-  già visti per \func{write} e \func{lseek}.}
+  in caso di errore, nel qual caso \var{errno} assumerà i valori già visti per
+  \func{write} e \func{lseek}.}
 \end{prototype}
 \noindent e per essa valgono le stesse considerazioni fatte per \func{pread}.
 
@@ -874,7 +874,7 @@ prototipo 
   Crea una copia del file descriptor \param{oldfd}.
   
   \bodydesc{La funzione ritorna il nuovo file descriptor in caso di successo e
-    -1 in caso di errore, nel qual caso \var{errno} viene impostata ad uno dei
+    -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei
     valori:
   \begin{errlist}
   \item[\macro{EBADF}] \param{oldfd} non è un file aperto.
@@ -927,8 +927,7 @@ prototipo 
   Rende \param{newfd} una copia del file descriptor \param{oldfd}.
   
   \bodydesc{La funzione ritorna il nuovo file descriptor in caso di successo e
-    -1 in caso di errore, nel qual caso \var{errno} viene impostata ad uno dei
-    valori:
+    -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
   \item[\macro{EBADF}] \param{oldfd} non è un file aperto o \param{newfd} ha un
     valore fuori dall'intervallo consentito per i file descriptor.
@@ -969,11 +968,11 @@ file descriptor viene usata la funzione \func{fcntl} il cui prototipo 
   sul file \param{fd}.
   
   \bodydesc{La funzione ha valori di ritorno diversi a seconda
-    dell'operazione. In caso di errore il valore di ritorno è -1 e la
-    variabile \var{errno} viene impostata ad un opportuno codice, quelli validi
-    in generale sono:
+    dell'operazione. In caso di errore il valore di ritorno è sempre -1 ed il
+    codice dell'errore è restituito nella variabile \var{errno}; i codici
+    possibili dipendono dal tipo di operazione, l'unico valido in generale è:
   \begin{errlist}
-  \item[\macro{EBADF}] \param{oldfd} non è un file aperto.
+  \item[\macro{EBADF}] \param{fd} non è un file aperto.
   \end{errlist}}
 \end{functions}
 
@@ -1002,9 +1001,9 @@ valori 
   di \tabref{tab:file_open_flags}). 
 \item[\macro{F\_SETFL}] imposta il \textit{file status flag} al valore
   specificato da \param{arg}, possono essere impostati solo i bit riportati
-  nella terza sezione di \tabref{tab:file_open_flags}.\footnote{la man page
-    riporta come impostabili solo \macro{O\_APPEND}, \macro{O\_NONBLOCK} e
-    \macro{O\_ASYNC}.}
+  nella terza sezione di \tabref{tab:file_open_flags}.\footnote{la pagina di
+    manuale riporta come impostabili solo \macro{O\_APPEND},
+    \macro{O\_NONBLOCK} e \macro{O\_ASYNC}.}
 \item[\macro{F\_GETLK}] se un file lock è attivo restituisce nella struttura
   \param{lock} la struttura \type{flock} che impedisce l'acquisizione del
   blocco, altrimenti imposta il campo \var{l\_type} a \macro{F\_UNLCK} (per i
@@ -1012,8 +1011,8 @@ valori 
 \item[\macro{F\_SETLK}] richiede il file lock specificato da \param{lock} se
   \var{l\_type} è \macro{F\_RDLCK} o \macro{F\_WRLLCK} o lo rilascia se
   \var{l\_type} è \macro{F\_UNLCK}. Se il lock è tenuto da qualcun'altro
-  ritorna immediatamente restituendo -1 e imposta \var{errno} a \macro{EACCES} o
-  \macro{EAGAIN} (per i dettagli sul \textit{file locking} vedi
+  ritorna immediatamente restituendo -1 e imposta \var{errno} a \macro{EACCES}
+  \macro{EAGAIN} (per i dettagli sul \textit{file locking} vedi
   \secref{sec:file_locking}).
 \item[\macro{F\_SETLKW}] identica a \macro{F\_SETLK} eccetto per il fatto che
   la funzione non ritorna subito ma attende che il blocco sia rilasciato. Se
@@ -1085,8 +1084,8 @@ per ogni singolo dispositivo.  Il prototipo di questa funzione 
   
   \bodydesc{La funzione nella maggior parte dei casi ritorna 0, alcune
     operazioni usano però il valore di ritorno per restituire informazioni. In
-    caso di errore viene sempre restituito -1 e \var{errno} viene impostata ad
-    uno dei valori seguenti:
+    caso di errore viene sempre restituito -1 ed \var{errno} assumerà uno dei
+    valori:
   \begin{errlist}
   \item[\macro{ENOTTY}] il file \param{fd} non è associato con un device, o la
     richiesta non è applicabile all'oggetto a cui fa riferimento \param{fd}.