Come per le normali operazioni di lettura e scrittura, anche per l'\textsl{I/O
vettorizzato} si pone il problema di poter effettuare le operazioni in
-maniera atomica a partire da un certa posizione sul file; per questo motivo a
-partire dal kernel 2.6.30 sono state introdotte anche per l'\textsl{I/O
- vettorizzato} le analoghe delle funzioni \func{pread} e \func{pwrite} (vedi
-sez.~\ref{sec:file_read} e \ref{sec:file_write}) che consentono di effettuare
-letture e scritture vettorizzate a partire da una certa posizione. Le due
-funzioni sono \funcd{preadv} e \func{pwritev} ed i rispettivi prototipi sono:
+maniera atomica a partire da un certa posizione sul file, così da evitare
+eventuali \itindex{race~condition} \textit{race conditions} in caso di
+combinazione con l'uso di \func{lseek}. Per questo motivo a partire dal kernel
+2.6.30 sono state introdotte anche per l'\textsl{I/O vettorizzato} le analoghe
+delle funzioni \func{pread} e \func{pwrite} (vedi sez.~\ref{sec:file_read} e
+\ref{sec:file_write}); le due funzioni sono \funcd{preadv} e \func{pwritev} ed
+i rispettivi prototipi sono:
+\begin{functions}
+ \headdecl{sys/uio.h}
+
+ \funcdecl{int preadv(int fd, const struct iovec *vector, int count, off\_t
+ offset)}
+ \funcdecl{int pwritev(int fd, const struct iovec *vector, int count, off\_t
+ offset)}
-% 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/
+ Eseguono una lettura o una scrittura vettorizzata a partire da una data
+ posizione sul file.
+
+ \bodydesc{Le funzioni hanno gli stessi valori di ritorno e gli stessi errori
+ delle corrispondenti \func{readv} e \func{writev} a cui si può aggiungere:
+ \begin{errlist}
+ \item[\errcode{EOVERFLOW}] \param{offset} ha un valore che non può essere
+ usato come \ctyp{off\_t}.
+ \item[\errcode{ESPIPE}] \param{fd} è associato ad un socket o una pipe.
+ \end{errlist}
+}
+\end{functions}
+% TODO preadv e pwritev inserite nel kernel 2.6.30, vedi
+% http://lwn.net/Articles/326818/
\subsection{L'I/O diretto fra file descriptor: \func{sendfile} e