Aggiornamenti vari, in particolare sui segnali ed i timer.
[gapil.git] / fileadv.tex
index 38b74dcade0c89e6480ea1b223277610a79cf1d2..3e26a51cf79e429c6aad4e7c81f8f4090a90860e 100644 (file)
@@ -1,6 +1,6 @@
 %% fileadv.tex
 %%
-%% Copyright (C) 2000-2008 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2009 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",
@@ -277,7 +277,7 @@ precedenti, ed inoltre aggiunge a \func{select} una nuova funzione
 \end{prototype}
 
 La funzione è sostanzialmente identica a \func{select}, solo che usa una
-struttura \struct{timespec} (vedi fig.~\ref{fig:sys_timeval_struct}) per
+struttura \struct{timespec} (vedi fig.~\ref{fig:sys_timespec_struct}) per
 indicare con maggiore precisione il timeout e non ne aggiorna il valore in
 caso di interruzione.\footnote{in realtà la system call di Linux aggiorna il
   valore al tempo rimanente, ma la funzione fornita dalle \acr{glibc} modifica
@@ -974,12 +974,11 @@ Per far questo per
 (vedi sez.~\ref{sec:sig_real_time}) impostando esplicitamente con il comando
 \const{F\_SETSIG} di \func{fcntl} un segnale real-time da inviare in caso di
 I/O asincrono (il segnale predefinito è \const{SIGIO}). In questo caso il
-gestore, tutte le volte che riceverà \const{SI\_SIGIO} come valore del
-campo \var{si\_code}\footnote{il valore resta \const{SI\_SIGIO} qualunque sia
-  il segnale che si è associato all'I/O asincrono, ed indica appunto che il
-  segnale è stato generato a causa di attività nell'I/O asincrono.} di
-\struct{siginfo\_t}, troverà nel campo \var{si\_fd} il valore del file
-descriptor che ha generato il segnale.
+gestore, tutte le volte che riceverà \const{SI\_SIGIO} come valore del campo
+\var{si\_code}\footnote{il valore resta \const{SI\_SIGIO} qualunque sia il
+  segnale che si è associato all'I/O, ed indica appunto che il segnale è stato
+  generato a causa di attività di I/O.} di \struct{siginfo\_t}, troverà nel
+campo \var{si\_fd} il valore del file descriptor che ha generato il segnale.
 
 Un secondo vantaggio dell'uso dei segnali real-time è che essendo questi
 ultimi dotati di una coda di consegna ogni segnale sarà associato ad uno solo
@@ -988,7 +987,7 @@ risposta a seconda del segnale usato, dato che i segnali real-time supportano
 anche questa funzionalità. In questo modo si può identificare immediatamente
 un file su cui l'accesso è diventato possibile evitando completamente l'uso di
 funzioni come \func{poll} e \func{select}, almeno fintanto che non si satura
-la coda.  
+la coda.
 
 Se infatti si eccedono le dimensioni di quest'ultima, il kernel, non potendo
 più assicurare il comportamento corretto per un segnale real-time, invierà al
@@ -1740,6 +1739,9 @@ raggruppati in un solo evento.
 
 \index{file!inotify|)}
 
+% TODO trattare fanotify, vedi http://lwn.net/Articles/339399/ e 
+% http://lwn.net/Articles/343346/ 
+
 
 \subsection{L'interfaccia POSIX per l'I/O asincrono}
 \label{sec:file_asyncronous_io}
@@ -2734,6 +2736,8 @@ mappatura che gi
 
 \itindend{memory~mapping}
 
+% TODO documentare \func{madvise}
+
 \subsection{I/O vettorizzato: \func{readv} e \func{writev}}
 \label{sec:file_multiple_io}
 
@@ -2823,6 +2827,7 @@ ma si perder
 
 % TODO verificare cosa succederà a preadv e pwritev o alla nuova niovec
 % vedi http://lwn.net/Articles/164887/
+% inserite nel kernel 2.6.30, vedi http://lwn.net/Articles/326818/
 
 
 \subsection{L'I/O diretto fra file descriptor: \func{sendfile} e \func{splice}}
@@ -3563,8 +3568,8 @@ saranno incrementate di conseguenza. Dopo aver eseguito con successo la
 funzione è garantito che una scrittura nella regione indicata non fallirà per
 mancanza di spazio disco.
 
+% TODO controllare la trattazione della nuova funzionalità di preallocazione 
 
 % TODO documentare \func{posix\_fadvise}
 % vedi http://insights.oetiker.ch/linux/fadvise.html
 % questo tread? http://www.ussg.iu.edu/hypermail/linux/kernel/0703.1/0032.html