Inserita una nuova tabella per gli standard POSIX, introdotti i
[gapil.git] / signal.tex
index 1ab3bd6aa8b1d9d510f83eecbc1fd3c7430cf7b2..f53e50b04d572b4bba0022ca38ede2e5da24dccf 100644 (file)
@@ -1122,7 +1122,7 @@ illustrati in precedenza usare; i possibili valori sono riportati in
 Il valore della struttura specificata \param{value} viene usato per settare il
 timer, se il puntatore \param{ovalue} non è nullo il precedente valore viene
 salvato qui. I valori dei timer devono essere indicati attraverso una
-struttura \var{itimerval}, definita in \figref{fig:file_stat_struct}.
+struttura \type{itimerval}, definita in \figref{fig:file_stat_struct}.
 
 La struttura è composta da due membri, il primo, \var{it\_interval} definisce
 il periodo del timer; il secondo, \var{it\_value} il tempo mancante alla
@@ -1146,7 +1146,7 @@ struct itimerval
     \end{lstlisting}
   \end{minipage} 
   \normalsize 
-  \caption{La struttura \var{itimerval}, che definisce i valori dei timer di
+  \caption{La struttura \type{itimerval}, che definisce i valori dei timer di
     sistema.} 
   \label{fig:sig_itimerval}
 \end{figure}
@@ -1854,19 +1854,20 @@ in \tabref{tab:sig_sa_flag}.
 \end{table}
 
 Come si può notare in \figref{fig:sig_sigaction} \func{sigaction}
-permette\footnote{La possibilità è prevista dallo standard POSIX.1b, ma in
-  Linux è stata aggiunta a partire dai kernel della serie 2.2.x. In precedenza
-  era possibile ottenere alcune informazioni addizionali usando
-  \var{sa\_handler} con un secondo parametro addizionale di tipo \var{struct
-    sigcontext}, che adesso è deprecato.}  di utilizzare due forme diverse di
-manipolatore, da specificare, a seconda dell'uso o meno del flag
-\macro{SA\_SIGINFO}, rispettivamente attraverso i campi \var{sa\_sigaction} o
-\var{sa\_handler}, (che devono essere usati in maniera alternativa, in certe
-implementazioni questi vengono addirittura definiti come \ctyp{union}): la
-prima è quella classica usata anche con \func{signal}, la seconda permette
-invece di usare un manipolatore in grado di ricevere informazioni più
-dettagliate dal sistema, attraverso la struttura \var{siginfo\_t}, riportata
-in \figref{fig:sig_siginfo_t}.
+permette\footnote{La possibilità è prevista dallo standard POSIX.1b, ed è
+  stata aggiunta a partire dai kernel della serie 2.1.x con l'introduzione dei
+  segnali real-time (vedi \secref{sec:sig_real_time}). In precedenza era
+  possibile ottenere alcune informazioni addizionali usando \var{sa\_handler}
+  con un secondo parametro addizionale di tipo \var{struct sigcontext}, che
+  adesso è deprecato.}  di utilizzare due forme diverse di manipolatore, da
+specificare, a seconda dell'uso o meno del flag \macro{SA\_SIGINFO},
+rispettivamente attraverso i campi \var{sa\_sigaction} o \var{sa\_handler},
+(che devono essere usati in maniera alternativa, in certe implementazioni
+questi vengono addirittura definiti come \ctyp{union}): la prima è quella
+classica usata anche con \func{signal}, la seconda permette invece di usare un
+manipolatore in grado di ricevere informazioni più dettagliate dal sistema,
+attraverso la struttura \type{siginfo\_t}, riportata in
+\figref{fig:sig_siginfo_t}.
 
 \begin{figure}[!htb]
   \footnotesize \centering
@@ -1891,7 +1892,7 @@ siginfo_t {
     \end{lstlisting}
   \end{minipage} 
   \normalsize 
-  \caption{La struttura \var{siginfo\_t}.} 
+  \caption{La struttura \type{siginfo\_t}.} 
   \label{fig:sig_siginfo_t}
 \end{figure}
  
@@ -2334,6 +2335,50 @@ parte l'uso di \type{sigjmp\_buf} per \param{env}, 
 \func{longjmp}.
 
 
+
+\subsection{I segnali real-time}
+\label{sec:sig_real_time}
+
+
+Lo standard POSIX.1b, nel definire una serie di nuove interfacce per i servizi
+real-time, ha introdotto una estensione del modello classico dei segnali che
+presenta dei significativi miglioramenti,\footnote{questa estensione è stata
+  introdotta in Linux a partire dal kernel 2.1.43(?), e dalle \acr{glibc}
+  2.1(?).} in particolare sono stati superati tre limiti fondamentali dei
+segnali classici:
+\begin{description}
+\item[I segnali non sono accumulati] se più segnali vengono generati prima
+  dell'esecuzione di un manipolatore questo sarà eseguito una sola volta, ed
+  il processo non sarà in grado di accorgersi di quante volte l'evento che ha
+  generato il segnale è accaduto.
+\item[I segnali non trasportano informazione] i segnali classici non prevedono
+  prevedono altra informazione sull'evento che li ha generati che il loro
+  numero.
+\item[I segnali non hanno un ordine di consegna] l'ordine in cui diversi
+  segnali vengono consegnati è casuale e non prevedibile, e dipende dalla
+  situazione in cui si trova il kernel al momento.
+\end{description}
+
+Le nuove caratteristiche aggiunte a quelli che vengono chiamati
+\textsl{segnali real-time}, sono le seguenti:
+
+\begin{itemize*}
+\item la creazione di una coda che permette di consegnare istanze multiple
+  dello stesso segnale qualora esso venga inviato più volte prima
+  dell'esecuzione del manipolatore.
+\item l'introduzione di una priorità nella consegna dei segnali (segnali a
+  priorità più alta vengono consegnati prima).
+\item la possibilità di restituire dei dati al manipolatore, attraverso l'uso
+  della struttura \type{siginfo\_t} e dei manipolatori di tipo
+  \var{sa_sigaction}.
+\end{itemize*}
+
+Per non interferire con i segnali standard POSIX i nuovi segnali sono
+definiti, in \file{signal.h} a partire da un valore minimo \macro{SIGRTMIN}
+fino \macro{SIGRTMAX} ad un massimo di
+
+
+
 %%% Local Variables: 
 %%% mode: latex
 %%% TeX-master: "gapil"