From f9ba92d383bd8e9abb75f54dbc0494b62f9a30c1 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Sat, 16 Jun 2007 22:54:55 +0000 Subject: [PATCH] Altre aggiunte e qualche correzione. --- fileadv.tex | 81 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 51 insertions(+), 30 deletions(-) diff --git a/fileadv.tex b/fileadv.tex index 33aa027..34d7ccc 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -660,16 +660,21 @@ delle operazioni cui fanno riferimento. \begin{table}[htb] \centering \footnotesize - \begin{tabular}[c]{|l|l|} + \begin{tabular}[c]{|l|p{8cm}|} \hline \textbf{Valore} & \textbf{Significato} \\ \hline \hline \const{EPOLL\_CTL\_ADD}& aggiunge un nuovo file descriptor da osservare \param{fd} alla lista dei file descriptor - controllati tramite \param{epfd}.\\ - \const{EPOLL\_CTL\_MOD}& .\\ - \const{EPOLL\_CTL\_DEL}& .\\ + controllati tramite \param{epfd}, in + \param{event} devono essere specificate le + modalità di osservazione.\\ + \const{EPOLL\_CTL\_MOD}& modifica le modalità di osservazione del file + descriptor \param{fd} secondo il contenuto di + \param{event}.\\ + \const{EPOLL\_CTL\_DEL}& rimuove il file descriptor \param{fd} dalla lista + dei file controllati tramite \param{epfd}.\\ \hline \end{tabular} \caption{Valori dell'argomento \param{op} che consentono di scegliere quale @@ -677,7 +682,21 @@ delle operazioni cui fanno riferimento. \label{tab:epoll_ctl_operation} \end{table} - +La funzione prende sempre come primo argomento un file descriptor di +\textit{epoll}, \param{epfd}, che deve essere stato ottenuto in precedenza con +una chiamata a \func{epoll\_create}. L'argomento \param{fd} indica invece il +file descriptor che si vuole tenere sotto controllo, quest'ultimo può essere +un qualunque file descriptor utilizzabile con \func{poll}, ed anche un altro +file descriptor di \textit{epoll}, ma non lo stesso \param{epfd}. + +L'ultimo argomento, \param{event}, deve essere un puntatore ad una struttura +di tipo \struct{epoll\_event}, ed ha significato solo con le operazioni +\const{EPOLL\_CTL\_MOD} e \const{EPOLL\_CTL\_ADD} per le quali serve ad +indicare quale tipo di evento relativo ad \param{fd} si vuole che sia tenuto +sotto controllo. L'argomento viene ignorato con +\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 anche un valore \texttt{NULL}.} \begin{figure}[!htb] \footnotesize \centering @@ -685,28 +704,44 @@ delle operazioni cui fanno riferimento. \includestruct{listati/epoll_event.h} \end{minipage} \normalsize - \caption{La struttura \structd{epoll\_event}, .} - \label{fig:} + \caption{La struttura \structd{epoll\_event}, che consente di specificare + gli eventi associati ad un file descriptor controllato con + \textit{epoll}.} + \label{fig:epoll_event} \end{figure} - +La struttura \struct{epoll\_event} è l'analoga di \struct{pollfd} e serve da +una parte ad impostare quali eventi osservare, dall'altra a ricevere le +notifiche degli eventi avvenuti. La sua definizione è riportata in +fig.~\ref{fig:epoll_event}; il primo campo, \var{events}, è una maschera +binaria in cui ciascun bit corrisponde o ad un tipo di evento, o una modalità +di notifica. Detto campo deve essere specificato come OR aritmetico delle +costanti riportate in tab.~\ref{tab:epoll_events}. Il secondo campo, +\var{data}, serve ad indicare a quale file descriptor si intende fare +riferimento, ed in astratto può contenere un valore qualsiasi che permetta di +identificarlo, di norma comunque si usa come valore lo stesso \param{fd}. \begin{table}[htb] \centering \footnotesize - \begin{tabular}[c]{|l|l|} + \begin{tabular}[c]{|l|p{8cm}|} \hline \textbf{Valore} & \textbf{Significato} \\ \hline \hline - \const{EPOLLIN}& .\\ - \const{EPOLLOUT}& .\\ - \const{EPOLLRDHUP}& .\\ - \const{EPOLLPRI}& .\\ - \const{EPOLLERR}& .\\ - \const{EPOLLHUP}& .\\ - \const{EPOLLET}& .\\ + \const{EPOLLIN} & Il file è pronto per le operazioni di lettura + (analogo di \const{POLLIN}).\\ + \const{EPOLLOUT} & Il file è pronto per le operazioni di scrittura + (analogo di \const{POLLOUT}).\\ + \const{EPOLLRDHUP} & .\\ + \const{EPOLLPRI} & Ci sono \itindex{out-of-band} dati urgenti + disponibili in lettura (analogo di + \const{POLLPRI}).\\ + \const{EPOLLERR} & Si è verificata una condizione di errore + (analogo di \const{POLLERR}).\\ + \const{EPOLLHUP} & Si è verificata una condizione di hung-up.\\ + \const{EPOLLET} & .\\ \const{EPOLLONESHOT}& .\\ \hline \end{tabular} @@ -715,23 +750,9 @@ delle operazioni cui fanno riferimento. \end{table} -, da -specificare con le costanti riportate in tab., -La funzione prende come primo argomento un file descriptor di \textit{epoll} -\param{epfd}, che deve essere stato ottenuto tramite \func{epoll\_create}, e -consente di impostare le operazioni di osservazione su un altro file -descriptor \param{fd} - - - - -La funzione esegue l'operazione di controllo specificata dall'argomento -\param{op}, -\param{fd} alla lista dei file descriptor osservati -sull'\textit{epoll descripter} \param{epfd} La funzione che consente di attendere è \funcd{epoll\_wait}, il cui prototipo -- 2.30.2