Varie correzioni da Fabio Rossi, e relative aggiunte nei ringrazimenti per
[gapil.git] / fileadv.tex
index 9e2bf77df693713c7f845d5b83c00828ddcdf0fa..c91f34e72f1606437145dbab7c4b5833cc551311 100644 (file)
@@ -136,16 +136,16 @@ opportune macro di preprocessore:
   \headdecl{sys/time.h}
   \headdecl{sys/types.h}
   \headdecl{unistd.h}
-  \funcdecl{FD\_ZERO(fd\_set *set)}
+  \funcdecl{void \macro{FD\_ZERO}(fd\_set *set)}
   Inizializza l'insieme (vuoto).
 
-  \funcdecl{FD\_SET(int fd, fd\_set *set)}
+  \funcdecl{void \macro{FD\_SET}(int fd, fd\_set *set)}
   Inserisce il file descriptor \param{fd} nell'insieme.
 
-  \funcdecl{FD\_CLR(int fd, fd\_set *set)}
+  \funcdecl{void \macro{FD\_CLR}(int fd, fd\_set *set)}
   Rimuove il file descriptor \param{fd} nell'insieme.
   
-  \funcdecl{FD\_ISSET(int fd, fd\_set *set)}
+  \funcdecl{int \macro{FD\_ISSET}(int fd, fd\_set *set)}
   Controlla se il file descriptor \param{fd} è nell'insieme.
 \end{functions}
 
@@ -193,7 +193,7 @@ La funzione restituisce il numero di file descriptor pronti,\footnote{questo 
   funzione è recente, ed esistono ancora alcune versioni di Unix che non si
   comportano in questo modo.}  e ciascun insieme viene sovrascritto per
 indicare quali sono i file descriptor pronti per le operazioni ad esso
-relative, in modo da poterli controllare con \const{FD\_ISSET}.  Se invece si
+relative, in modo da poterli controllare con \macro{FD\_ISSET}.  Se invece si
 ha un timeout viene restituito un valore nullo e gli insiemi non vengono
 modificati.  In caso di errore la funzione restituisce -1, ed i valori dei tre
 insiemi sono indefiniti e non si può fare nessun affidamento sul loro
@@ -420,8 +420,8 @@ distinzione ha senso solo per i dati \textit{out-of-band} dei socket (vedi
 sez.~\ref{sec:TCP_urgent_data}), ma su questo e su come \func{poll} reagisce
 alle varie condizioni dei socket torneremo in sez.~\ref{sec:TCP_serv_poll},
 dove vedremo anche un esempio del suo utilizzo. Si tenga conto comunque che le
-costanti relative ai diversi tipi di dati (come \macro{POLLRDNORM} e
-\macro{POLLRDBAND}) sono utilizzabili soltanto qualora si sia definita la
+costanti relative ai diversi tipi di dati (come \const{POLLRDNORM} e
+\const{POLLRDBAND}) sono utilizzabili soltanto qualora si sia definita la
 macro \macro{\_XOPEN\_SOURCE}.\footnote{e ci si ricordi di farlo sempre in
   testa al file, definirla soltanto prima di includere \file{sys/poll.h} non è
   sufficiente.}
@@ -736,7 +736,7 @@ esaurimento.
 
 Oltre alle operazioni di lettura e scrittura l'interfaccia POSIX.1b mette a
 disposizione un'altra operazione, quella di sincronizzazione dell'I/O,
-compiuta dalla funzione \func{aio\_fsync}, che ha lo stesso effetto della
+compiuta dalla funzione \funcd{aio\_fsync}, che ha lo stesso effetto della
 analoga \func{fsync}, ma viene eseguita in maniera asincrona; il suo prototipo
 è:
 \begin{prototype}{aio.h}
@@ -946,7 +946,7 @@ prototipi sono:
   \end{errlist}
   ed inoltre \errval{EISDIR}, \errval{ENOMEM}, \errval{EFAULT} (se non sono
   stato allocati correttamente i buffer specificati nei campi
-  \func{iov\_base}), più tutti gli ulteriori errori che potrebbero avere le
+  \var{iov\_base}), più tutti gli ulteriori errori che potrebbero avere le
   usuali funzioni di lettura e scrittura eseguite su \param{fd}.}
 \end{functions}
 
@@ -1127,7 +1127,7 @@ tab.~\ref{tab:file_mmap_flag}.
                              visibili agli altri processi che mappano lo stesso
                              file.\footnotemark Il file su disco però non sarà
                              aggiornato fino alla chiamata di \func{msync} o
-                             \func{unmap}), e solo allora le modifiche saranno
+                             \func{munmap}), e solo allora le modifiche saranno
                              visibili per l'I/O convenzionale. Incompatibile
                              con \const{MAP\_PRIVATE}. \\ 
     \const{MAP\_PRIVATE}   & I cambiamenti sulla memoria mappata non vengono
@@ -1547,14 +1547,14 @@ anche se richiesto attraverso un file descriptor, agisce sempre su un file;
 perciò le informazioni relative agli eventuali \textit{file lock} sono
 mantenute a livello di inode\index{inode},\footnote{in particolare, come
   accennato in fig.~\ref{fig:file_flock_struct}, i \textit{file lock} sono
-  mantenuti un una \textit{linked list}\index{linked list} di strutture
-  \struct{file\_lock}. La lista è referenziata dall'indirizzo di partenza
-  mantenuto dal campo \var{i\_flock} della struttura \struct{inode} (per le
-  definizioni esatte si faccia riferimento al file \file{fs.h} nei sorgenti
-  del kernel).  Un bit del campo \var{fl\_flags} di specifica se si tratta di
-  un lock in semantica BSD (\const{FL\_FLOCK}) o POSIX (\const{FL\_POSIX}).}
-dato che questo è l'unico riferimento in comune che possono avere due processi
-diversi che aprono lo stesso file.
+  mantenuti un una \textit{linked~list}\index{\textit{linked list}} di
+  strutture \struct{file\_lock}. La lista è referenziata dall'indirizzo di
+  partenza mantenuto dal campo \var{i\_flock} della struttura \struct{inode}
+  (per le definizioni esatte si faccia riferimento al file \file{fs.h} nei
+  sorgenti del kernel).  Un bit del campo \var{fl\_flags} di specifica se si
+  tratta di un lock in semantica BSD (\const{FL\_FLOCK}) o POSIX
+  (\const{FL\_POSIX}).}  dato che questo è l'unico riferimento in comune che
+possono avere due processi diversi che aprono lo stesso file.
 
 \begin{figure}[htb]
   \centering
@@ -1801,7 +1801,8 @@ questo caso la titolarit
 voce nella file table, ma con il valore del \acr{pid} del processo.
 
 Quando si richiede un lock il kernel effettua una scansione di tutti i lock
-presenti sul file\footnote{scandisce cioè la linked list delle strutture
+presenti sul file\footnote{scandisce cioè la
+  \index{\textit{linked~list}}\textit{linked list} delle strutture
   \struct{file\_lock}, scartando automaticamente quelle per cui
   \var{fl\_flags} non è \const{FL\_POSIX}, così che le due interfacce restano
   ben separate.}  per verificare se la regione richiesta non si sovrappone ad