\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
\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
\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}
\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