Altre aggiunte e qualche correzione.
authorSimone Piccardi <piccardi@gnulinux.it>
Sat, 16 Jun 2007 22:54:55 +0000 (22:54 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sat, 16 Jun 2007 22:54:55 +0000 (22:54 +0000)
fileadv.tex

index 33aa027651d1f005a2ccd0e63f7329ae73392935..34d7ccc0c2523e468f1b5ad4484541b38718e72d 100644 (file)
@@ -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