Altre modifiche e correzioni sul testo.
[gapil.git] / fileadv.tex
index ba81956bd189bb94ead8b7aa6bb4e5bd88d62106..fe6dda66ab8436d5124db5ab9a99f033d52ab99f 100644 (file)
@@ -2003,26 +2003,62 @@ impostazione successiva con \func{fcntl}.\footnote{questo 
 \end{table}
 
 L'interfaccia fornita da \func{signalfd} prevede che la ricezione dei segnali
-sia eseguita leggendo dal file descriptor restituito dalla funzione. La
-lettura fornisce nel buffer indicato come secondo argomento alla funzione
-\func{read} una o più strutture \struct{signalfd\_siginfo} a seconda della
-dimensione dello stesso e del numero di segnali pendenti. Pertanto il buffer
-deve essere almeno di dimensione pari a \code{sizeof(signalfd\_siginfo)}; se
-di dimensione maggiore potranno essere letti in unica soluzione 
-
-% TODO trattare qui eventfd, signalfd e timerfd introdotte con il 2.6.22 
+sia eseguita leggendo i dati relativi ai segnali pendenti dal file descriptor
+restituito dalla funzione con una normalissima \func{read}. Questi dati
+vengono scritti sul buffer indicato come secondo argomento di \func{read} in
+forma di una sequenza di una o più strutture \struct{signalfd\_siginfo} (la
+cui definizione si è riportata in fig.~\ref{fig:signalfd_siginfo}) a seconda
+sia della dimensione del buffer che del numero di segnali pendenti. Per questo
+motivo il buffer deve essere almeno di dimensione pari a quella di
+\struct{signalfd\_siginfo}, qualora sia di dimensione maggiore potranno essere
+letti in unica soluzione i dati relativi ad eventuali più segnali pendenti,
+fino al numero massimo di strutture \struct{signalfd\_siginfo} che possono
+rientrare nel buffer.
+
+\begin{figure}[!htb]
+  \footnotesize \centering
+  \begin{minipage}[c]{15cm}
+    \includestruct{listati/signalfd_siginfo.h}
+  \end{minipage} 
+  \normalsize 
+  \caption{La struttura \structd{signalfd\_siginfo}, restituita in lettura da
+    un file descriptor creato con \func{signalfd}.}
+  \label{fig:signalfd_siginfo}
+\end{figure}
+
+Si tenga presente che lettura di una struttura \struct{signalfd\_siginfo}
+relativa ad un segnale pendente è equivalente alla esecuzione di un gestore,
+vale a dire che una volta letta il segnale non sarà più pendente e non potrà
+essere ricevuto, qualora si ripristino le normali condizioni di gestione, né
+da un gestore né dalla funzione \func{sigwaitinfo}. 
+
+% TODO trattare qui eventfd, timerfd introdotte con il 2.6.22 
 % timerfd è stata tolta nel 2.6.23 e rifatta per bene nel 2.6.25
 % vedi: http://lwn.net/Articles/233462/
 %       http://lwn.net/Articles/245533/
 %       http://lwn.net/Articles/267331/
 
-\begin{figure}[!phtb]
+
+\begin{figure}[!htb]
+  \footnotesize \centering
+  \begin{minipage}[c]{15cm}
+    \includecodesample{listati/FifoReporter-init.c}
+  \end{minipage} 
+  \normalsize 
+  \caption{Sezione di inizializzazione del codice del programma
+    \file{FifoReporter.c}.}
+  \label{fig:fiforeporter_code}
+\end{figure}
+
+
+
+\begin{figure}[!htb]
   \footnotesize \centering
   \begin{minipage}[c]{15cm}
-    \includecodesample{listati/FifoReporter.c}
+    \includecodesample{listati/FifoReporter-main.c}
   \end{minipage} 
   \normalsize 
-  \caption{Sezione principale del codice del programma \file{FifoReporter.c}.}
+  \caption{Ciclo principale del codice del programma \file{FifoReporter.c}.}
   \label{fig:fiforeporter_code}
 \end{figure}