Uniformate le tabelle ed eliminate le ripetizioni trovate con:
[gapil.git] / signal.tex
index 2d9d439d17352a3f8653d108a449cefad06d8ac9..43d2fe71eb94b68a643c3d1560c786bb3587969c 100644 (file)
@@ -304,12 +304,12 @@ definiti in vari standard.
     \textbf{Sigla} & \textbf{Significato} \\
     \hline
     \hline
-    A & L'azione predefinita è terminare il processo. \\
-    B & L'azione predefinita è ignorare il segnale. \\
+    A & L'azione predefinita è terminare il processo.\\
+    B & L'azione predefinita è ignorare il segnale.\\
     C & L'azione predefinita è terminare il processo e scrivere un 
-        \itindex{core~dump} \textit{core dump}. \\
-    D & L'azione predefinita è fermare il processo. \\
-    E & Il segnale non può essere intercettato. \\
+        \itindex{core~dump} \textit{core dump}.\\
+    D & L'azione predefinita è fermare il processo.\\
+    E & Il segnale non può essere intercettato.\\
     F & Il segnale non può essere ignorato.\\
     \hline
   \end{tabular}
@@ -334,10 +334,10 @@ colonna standard sono stati indicati anche gli standard in cui ciascun segnale
     \textbf{Sigla} & \textbf{Standard} \\
     \hline
     \hline
-    P & POSIX. \\
-    B & BSD. \\
-    L & Linux.\\
-    S & SUSv2.\\
+    P & POSIX \\
+    B & BSD \\
+    L & Linux \\
+    S & SUSv2 \\
     \hline
   \end{tabular}
   \caption{Legenda dei valori della colonna \textbf{Standard} di 
@@ -761,7 +761,7 @@ indicizzate per numero di segnale, per cui una chiamata del tipo di \code{char
 
 
 
-\section{La gestione dei segnali}
+\section{La gestione di base dei segnali}
 \label{sec:sig_management}
 
 I segnali sono il primo e più classico esempio di eventi asincroni, cioè di
@@ -997,9 +997,9 @@ prototipo 
   \bodydesc{La funzione restituisce 0 in caso di successo e $-1$ in caso di
     errore nel qual caso \var{errno} assumerà uno dei valori:
     \begin{errlist}
-    \item[\errcode{EINVAL}] Il segnale specificato non esiste.
-    \item[\errcode{ESRCH}] Il processo selezionato non esiste.
-    \item[\errcode{EPERM}] Non si hanno privilegi sufficienti ad inviare il
+    \item[\errcode{EINVAL}] il segnale specificato non esiste.
+    \item[\errcode{ESRCH}] il processo selezionato non esiste.
+    \item[\errcode{EPERM}] non si hanno privilegi sufficienti ad inviare il
       segnale.
     \end{errlist}}
 \end{functions}
@@ -1045,11 +1045,11 @@ Una seconda funzione che pu
     \textbf{Valore} & \textbf{Significato} \\
     \hline
     \hline
-    $>0$ & il segnale è mandato al processo con il \acr{pid} indicato.\\
-    0    & il segnale è mandato ad ogni processo del \itindex{process~group}
+    $>0$ & Il segnale è mandato al processo con il \acr{pid} indicato.\\
+    0    & Il segnale è mandato ad ogni processo del \itindex{process~group}
            \textit{process group} del chiamante.\\ 
-    $-1$ & il segnale è mandato ad ogni processo (eccetto \cmd{init}).\\
-    $<-1$ & il segnale è mandato ad ogni processo del \textit{process group} 
+    $-1$ & Il segnale è mandato ad ogni processo (eccetto \cmd{init}).\\
+    $<-1$ & Il segnale è mandato ad ogni processo del \textit{process group} 
             \itindex{process~group} $|\code{pid}|$.\\
     \hline
   \end{tabular}
@@ -1472,8 +1472,8 @@ tutti gli stati di terminazione sono stati ricevuti.
 
 
 
-\section{Gestione avanzata}
-\label{sec:sig_control}
+\section{La gestione avanzata dei segnali}
+\label{sec:sig_adv_control}
 
 Le funzioni esaminate finora fanno riferimento alle modalità più elementari
 della gestione dei segnali; non si sono pertanto ancora prese in
@@ -1583,10 +1583,9 @@ relative azioni conseguenti (\texttt{\small 6-11}).
 Questo è il tipico esempio di caso, già citato in
 sez.~\ref{sec:proc_race_cond}, in cui si genera una \itindex{race~condition}
 \textit{race condition}; infatti, in una situazione in cui un segnale è già
-arrivato (e \var{flag} è già ad 1) se un altro segnale segnale arriva
-immediatamente dopo l'esecuzione del controllo (\texttt{\small 6}) ma prima
-della cancellazione del flag (\texttt{\small 7}), la sua occorrenza sarà
-perduta.
+arrivato (e \var{flag} è già ad 1) se un altro segnale arriva immediatamente
+dopo l'esecuzione del controllo (\texttt{\small 6}) ma prima della
+cancellazione del flag (\texttt{\small 7}), la sua occorrenza sarà perduta.
 
 Questi esempi ci mostrano che per una gestione effettiva dei segnali occorrono
 delle funzioni più sofisticate di quelle finora illustrate, queste hanno la
@@ -1686,10 +1685,10 @@ da un processo. Il suo prototipo 
   \bodydesc{La funzione restituisce zero in caso di successo e $-1$ per un
     errore, nel qual caso \var{errno} assumerà i valori:
   \begin{errlist}
-  \item[\errcode{EINVAL}] Si è specificato un numero di segnale invalido o si è
+  \item[\errcode{EINVAL}] si è specificato un numero di segnale invalido o si è
     cercato di installare il gestore per \const{SIGKILL} o
     \const{SIGSTOP}.
-  \item[\errcode{EFAULT}] Si sono specificati indirizzi non validi.
+  \item[\errcode{EFAULT}] si sono specificati indirizzi non validi.
   \end{errlist}}
 \end{prototype}
 
@@ -1763,7 +1762,7 @@ tab.~\ref{tab:sig_sa_flag}.
                            lanciato, riproduce cioè il comportamento della
                            semantica inaffidabile.\\  
     \const{SA\_ONESHOT}  & Nome obsoleto, sinonimo non standard di
-                           \const{SA\_RESETHAND}; da evitare. \\ 
+                           \const{SA\_RESETHAND}; da evitare.\\ 
     \const{SA\_ONSTACK}  & Stabilisce l'uso di uno \itindex{stack} stack 
                            alternativo per l'esecuzione del gestore (vedi
                            sez.~\ref{sec:sig_specific_features}).\\ 
@@ -1794,7 +1793,7 @@ tab.~\ref{tab:sig_sa_flag}.
 % TODO con il 2.6 sono stati aggiunti SA_NOCLDWAIT e altro, documentare
 
 Come si può notare in fig.~\ref{fig:sig_sigaction} \func{sigaction} permette
-di utilizzare due forme diverse di gestore,\footnote{La possibilità è prevista
+di utilizzare due forme diverse di gestore,\footnote{la possibilità è prevista
   dallo standard POSIX.1b, ed è stata aggiunta nei kernel della serie 2.1.x
   con l'introduzione dei segnali real-time (vedi
   sez.~\ref{sec:sig_real_time}); in precedenza era possibile ottenere alcune
@@ -1939,8 +1938,8 @@ pi
   \bodydesc{La funzione restituisce zero in caso di successo e $-1$ per un
     errore, nel qual caso \var{errno} assumerà i valori:
   \begin{errlist}
-  \item[\errcode{EINVAL}] Si è specificato un numero di segnale invalido.
-  \item[\errcode{EFAULT}] Si sono specificati indirizzi non validi.
+  \item[\errcode{EINVAL}] si è specificato un numero di segnale invalido.
+  \item[\errcode{EFAULT}] si sono specificati indirizzi non validi.
   \end{errlist}}
 \end{prototype}
 
@@ -2002,8 +2001,8 @@ sospensione del processo lo standard POSIX ha previsto la funzione
   \bodydesc{La funzione restituisce zero in caso di successo e $-1$ per un
     errore, nel qual caso \var{errno} assumerà i valori:
   \begin{errlist}
-  \item[\errcode{EINVAL}] Si è specificato un numero di segnale invalido.
-  \item[\errcode{EFAULT}] Si sono specificati indirizzi non validi.
+  \item[\errcode{EINVAL}] si è specificato un numero di segnale invalido.
+  \item[\errcode{EFAULT}] si sono specificati indirizzi non validi.
   \end{errlist}}
 \end{prototype}
 
@@ -2132,10 +2131,10 @@ Installa un nuovo stack per i segnali.
     errore, nel qual caso \var{errno} assumerà i valori:
 
   \begin{errlist}
-  \item[\errcode{ENOMEM}] La dimensione specificata per il nuovo stack è minore
+  \item[\errcode{ENOMEM}] la dimensione specificata per il nuovo stack è minore
   di \const{MINSIGSTKSZ}.
-  \item[\errcode{EPERM}] Uno degli indirizzi non è valido.
-  \item[\errcode{EFAULT}] Si è cercato di cambiare lo stack alternativo mentre
+  \item[\errcode{EPERM}] uno degli indirizzi non è valido.
+  \item[\errcode{EFAULT}] si è cercato di cambiare lo stack alternativo mentre
   questo è attivo (cioè il processo è in esecuzione su di esso).
   \item[\errcode{EINVAL}] \param{ss} non è nullo e \var{ss\_flags} contiene un
   valore diverso da zero che non è \const{SS\_DISABLE}.
@@ -2314,6 +2313,16 @@ accorgimenti visti in precedenza) il valore di questa variabile tutte le volte
 che si è rilevata una interruzione dovuta ad un segnale.
 
 
+\section{Funzionalità avanzate}
+\label{sec:sig_real_time}
+
+
+Tratteremo in questa ultima sezione alcune funzionalità avanzate relativa ai
+segnali ed in generale ai meccanismi di notifica, a partire dalla funzioni
+introdotte per la gestione dei cosiddetti ``\textsl{segnali real-time}'', alla
+gestione avanzata delle temporizzazioni e le nuove interfacce per la gestione
+di segnali ed eventi attraverso l'uso di filedescriptor.
+
 \subsection{I segnali real-time}
 \label{sec:sig_real_time}
 
@@ -2428,12 +2437,12 @@ funzione, \funcd{sigqueue}, il cui prototipo 
   \bodydesc{La funzione restituisce 0 in caso di successo e $-1$ in caso di
     errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
-  \item[\errcode{EAGAIN}] La coda è esaurita, ci sono già \const{SIGQUEUE\_MAX}
-    segnali in attesa si consegna.
-  \item[\errcode{EPERM}] Non si hanno privilegi appropriati per inviare il
+  \item[\errcode{EAGAIN}] la coda è esaurita, ci sono già
+    \const{SIGQUEUE\_MAX} segnali in attesa si consegna.
+  \item[\errcode{EPERM}] non si hanno privilegi appropriati per inviare il
     segnale al processo specificato.
-  \item[\errcode{ESRCH}] Il processo \param{pid} non esiste.
-  \item[\errcode{EINVAL}] Si è specificato un valore non valido per
+  \item[\errcode{ESRCH}] il processo \param{pid} non esiste.
+  \item[\errcode{EINVAL}] si è specificato un valore non valido per
     \param{signo}.
   \end{errlist}
   ed inoltre \errval{ENOMEM}.}
@@ -2452,8 +2461,8 @@ installato un gestore con \const{SA\_SIGINFO} e ci sono risorse disponibili,
   sez.~\ref{sec:sys_limits}; il suo valore minimo secondo lo standard,
   \const{\_POSIX\_SIGQUEUE\_MAX}, è pari a 32. Nel caso di Linux questo è uno
   dei parametri del kernel impostabili sia con \func{sysctl}, che scrivendolo
-  direttamente in \file{/proc/sys/kernel/rtsig-max}, il valore predefinito è
-  di 1024.} nella coda dei segnali real-time) esso viene inserito e diventa
+  direttamente in \procfile{/proc/sys/kernel/rtsig-max}, il valore predefinito
+  è di 1024.} nella coda dei segnali real-time) esso viene inserito e diventa
 pendente; una volta consegnato riporterà nel campo \var{si\_code} di
 \struct{siginfo\_t} il valore \const{SI\_QUEUE} e il campo \var{si\_value}
 riceverà quanto inviato con \param{value}. Se invece si è installato un
@@ -2473,8 +2482,8 @@ meccanismi di comunicazione elementare; la prima di queste funzioni 
   \bodydesc{La funzione restituisce 0 in caso di successo e $-1$ in caso di
     errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
-  \item[\errcode{EINTR}] La funzione è stata interrotta.
-  \item[\errcode{EINVAL}] Si è specificato un valore non valido per
+  \item[\errcode{EINTR}] la funzione è stata interrotta.
+  \item[\errcode{EINVAL}] si è specificato un valore non valido per
     \param{set}.
   \end{errlist}
   ed inoltre \errval{EFAULT}.}
@@ -2519,7 +2528,7 @@ relativi prototipi sono:
     errore, nel qual caso \var{errno} assumerà uno dei valori già visti per
     \func{sigwait}, ai quali si aggiunge, per \func{sigtimedwait}:
   \begin{errlist}
-  \item[\errcode{EAGAIN}] Si è superato il timeout senza che un segnale atteso
+  \item[\errcode{EAGAIN}] si è superato il timeout senza che un segnale atteso
     fosse emesso.
   \end{errlist}
 }
@@ -2550,6 +2559,19 @@ questa maniera devono essere mascherati per tutti i thread, compreso quello
 dedicato alla gestione, che potrebbe riceverlo fra due chiamate successive.
 
 
+\subsection{La gestione avanzata delle temporizzazioni}
+\label{sec:sig_timer_adv}
+
+
+
+
+\subsection{Le interfacce per la notifica attraverso i file descriptor}
+\label{sec:sig_signalfd_eventfd}
+
+
+% TODO trattare qui eventfd signalfd e timerfd introdotte con il 2.6.22
+% vedi: http://lwn.net/Articles/233462/
+%       http://lwn.net/Articles/245533/
 
 
 % LocalWords:  kernel POSIX timer shell control ctrl kill raise signal handler