X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=fileadv.tex;h=8e8cfd801344b1d7b74cbc57f8079ef9b2d45bf9;hb=e4436c3ab2cf203d25842993631b4a7b735eac72;hp=1c8cb6b82884d6e7edfbe8b6e8c476de90a0c64f;hpb=b2fde72b2f308cb35873f1fd050501af6a742bc0;p=gapil.git diff --git a/fileadv.tex b/fileadv.tex index 1c8cb6b..8e8cfd8 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -1,6 +1,6 @@ %% fileadv.tex %% -%% Copyright (C) 2000-2007 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 @@ -2734,6 +2733,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 +2824,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 +3565,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