X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=fileadv.tex;h=e69c9d7dad9448559e67af400d7d6803eb2597bc;hb=f8d990a1b2a184dba66301ae20d1f7e8f300c139;hp=38f01fcf3d77be4a850bf90f374e33c2d29a1a67;hpb=583032fbff658a947c477c6fd25f87c13d884e85;p=gapil.git diff --git a/fileadv.tex b/fileadv.tex index 38f01fc..e69c9d7 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -8,6 +8,7 @@ %% license is included in the section entitled "GNU Free Documentation %% License". %% + \chapter{La gestione avanzata dei file} \label{cha:file_advanced} In questo capitolo affronteremo le tematiche relative alla gestione avanzata @@ -189,11 +190,12 @@ riportate in tab.~\ref{tab:file_flock_operation}. \end{table} I primi due valori, \const{LOCK\_SH} e \const{LOCK\_EX} permettono di -richiedere un \textit{file lock}, ed ovviamente devono essere usati in maniera -alternativa. Se si specifica anche \const{LOCK\_NB} la funzione non si -bloccherà qualora il \textit{file lock} non possa essere acquisito, ma -ritornerà subito con un errore di \errcode{EWOULDBLOCK}. Per rilasciare un -\textit{file lock} si dovrà invece usare \const{LOCK\_UN}. +richiedere un \textit{file lock} rispettivamente condiviso o esclusivo, ed +ovviamente non possono essere usati insieme. Se con essi si specifica anche +\const{LOCK\_NB} la funzione non si bloccherà qualora il \textit{file lock} +non possa essere acquisito, ma ritornerà subito con un errore di +\errcode{EWOULDBLOCK}. Per rilasciare un \textit{file lock} si dovrà invece +usare direttamente const{LOCK\_UN}. Si tenga presente che non esiste una modalità per eseguire atomicamente un cambiamento del tipo di blocco (da \textit{shared lock} a \textit{esclusive @@ -470,7 +472,7 @@ voce nella \itindex{file~table} \textit{file table}, ma con il valore del \acr{pid} del processo. \begin{figure}[!bht] - \centering \includegraphics[width=13cm]{img/file_posix_lock} + \centering \includegraphics[width=12cm]{img/file_posix_lock} \caption{Schema dell'architettura del \textit{file locking}, nel caso particolare del suo utilizzo secondo l'interfaccia standard POSIX.} \label{fig:file_posix_lock} @@ -1623,7 +1625,7 @@ indicare quale tipo di evento relativo ad \param{fd} si vuole che sia tenuto sotto controllo. L'argomento viene ignorato con l'operazione \const{EPOLL\_CTL\_DEL}.\footnote{fino al kernel 2.6.9 era comunque richiesto che questo fosse un puntatore valido, anche se poi veniva ignorato; a - partire dal 2.6.9 si può specificare anche un valore \texttt{NULL} ma se si + partire dal 2.6.9 si può specificare anche un valore \val{NULL} ma se si vuole mantenere la compatibilità con le versioni precedenti occorre usare un puntatore valido.} @@ -3309,6 +3311,8 @@ raggruppati in un solo evento. \subsection{L'interfaccia POSIX per l'I/O asincrono} \label{sec:file_asyncronous_io} +% vedere anche http://davmac.org/davpage/linux/async-io.html + Una modalità alternativa all'uso dell'\textit{I/O multiplexing} per gestione dell'I/O simultaneo su molti file è costituita dal cosiddetto \textsl{I/O asincrono}. Il concetto base dell'\textsl{I/O asincrono} è che le funzioni @@ -4737,7 +4741,7 @@ definito la macro \macro{\_GNU\_SOURCE},\footnote{si ricordi che questa \item[\errcode{ENOMEM}] non c'è memoria sufficiente per l'operazione richiesta. \item[\errcode{ESPIPE}] o \param{off\_in} o \param{off\_out} non sono - \const{NULL} ma il corrispondente file descriptor è una \textit{pipe}. + \val{NULL} ma il corrispondente file descriptor è una \textit{pipe}. \end{errlist} } \end{functions} @@ -5404,11 +5408,6 @@ livello di kernel. -%\subsection{L'utilizzo delle porte di I/O} -%\label{sec:file_io_port} -% -% TODO l'I/O sulle porte di I/O -% consultare le manpage di ioperm, iopl e outb % TODO non so dove trattarli, ma dal 2.6.39 ci sono i file handle, vedi % http://lwn.net/Articles/432757/