\textit{thread}, compreso quello dedicato alla gestione, che potrebbe
riceverlo fra due chiamate successive.
-Come esempio elementare dell'uso dei segnali \textit{real-time}, e della
-possibilità di inviare informazioni al gestore degli stessi con
-\func{sigqueue}, si è riportato in fig.~\ref{fig:sig_rtsival_main} il corpo
-principale di un programma elementare che legge dal terminale un valore
-numerico, ed utilizza un segnale \textit{real-time} per inviarlo al gestore
-dello stesso. Si sono trascurati i controlli dei valori di ritorno delle varie
-funzioni per brevità.
-
\begin{figure}[!htb]
\footnotesize \centering
\begin{minipage}[c]{\codesamplewidth}
\label{fig:sig_rtsival_main}
\end{figure}
+Come esempio elementare dell'uso dei segnali \textit{real-time}, e della
+possibilità di inviare informazioni al gestore degli stessi con
+\func{sigqueue}, si è riportato in fig.~\ref{fig:sig_rtsival_main} il corpo
+principale di un programma elementare che legge dal terminale un valore
+numerico, ed utilizza un segnale \textit{real-time} per inviarlo al gestore
+dello stesso. Nel codice sono stati trascurati i controlli dei valori di
+ritorno delle varie funzioni per mantenere la brevità dell'esempio.
+
Dopo aver definito (\texttt{\small 5}) una variabile \var{value} di tipo
-\type{sigval\_t} per inviare i dati, ed aver opportunamente scelto
+\type{sigval\_t} per poter inviare i dati, e dopo aver opportunamente scelto
(\texttt{\small 6}) per \var{signo} un segnale \textit{real-time}, la parte
iniziale del programma (\texttt{\small 8--11}) installa il relativo gestore
-(la cui definizione è riportata in fig.~\ref{fig:sig_rtsival_handl}), dopo di
+(la cui definizione è riportata in fig.~\ref{fig:sig_rtsival_handl}). Dopo di
che il programma si pone in un ciclo infinito (\texttt{\small 14--27}) in cui
prima (\texttt{\small 15--20}) legge in buffer dallo \textit{standard input}
una stringa immessa dall'utente, terminandola opportunamente (\texttt{\small
stesso (\texttt{\small 23}) il segnale \textit{real-time}, altrimenti stampa
un avviso (\texttt{\small 24}).
+Alla ricezione del segnale il gestore si limita a stampare alcune delle
+informazioni ricevute nella struttura \struct{sigval\_t}, ed in particolare
+(\texttt{\small 5}) stampa tramite il valore del campo \var{si\_value} il
+numero che gli è stato inviato da \func{sigqueue}.
\begin{figure}[!htb]
\footnotesize \centering
\includecodesample{listati/rtsigvalsend_handl.c}
\end{minipage}
\normalsize
- \caption{Codice del gestore.}
+ \caption{Codice del gestore usato dal programma di
+ fig.~\ref{fig:sig_rtsival_main}.}
\label{fig:sig_rtsival_handl}
\end{figure}
-
-
-
\subsection{La gestione avanzata delle temporizzazioni}
\label{sec:sig_timer_adv}
altre funzioni per il supporto delle estensioni \textit{real-time} con il
rilascio del kernel 2.6, ma la risoluzione effettiva era nominale.
-A tutte le implementazioni che si rifanno a queste estensioni è richiesto di
-disporre di una versione \textit{real-time} almeno per l'orologio generale di
-sistema, quello che mantiene il \textit{calendar time} (vedi
-sez.~\ref{sec:sys_time_base}), che in questa forma deve indicare il numero di
-secondi e nanosecondi passati a partire dal primo gennaio 1970 (\textit{The
- Epoch}). Si ricordi infatti che l'orologio ordinario usato dal
-\textit{calendar time} riporta solo un numero di secondi, e che la risoluzione
-effettiva normalmente non raggiunge il nanosecondo (a meno di hardware
-specializzato). Oltre all'orologio generale di sistema possono essere
-presenti altri tipi di orologi \textit{real-time}, ciascuno dei quali viene
-identificato da un opportuno valore di una variabile di tipo
-\type{clockid\_t}; un elenco di quelli disponibili su Linux è riportato in
-tab.~\ref{tab:sig_timer_clockid_types}.
-
\begin{table}[htb]
\footnotesize
\centering
\label{tab:sig_timer_clockid_types}
\end{table}
+A tutte le implementazioni che si rifanno a queste estensioni è richiesto di
+disporre di una versione \textit{real-time} almeno per l'orologio generale di
+sistema, quello che mantiene il \textit{calendar time} (vedi
+sez.~\ref{sec:sys_time_base}), che in questa forma deve indicare il numero di
+secondi e nanosecondi passati a partire dal primo gennaio 1970 (\textit{The
+ Epoch}). Si ricordi infatti che l'orologio ordinario usato dal
+\textit{calendar time} riporta solo un numero di secondi, e che la risoluzione
+effettiva normalmente non raggiunge il nanosecondo (a meno di hardware
+specializzato). Oltre all'orologio generale di sistema possono essere
+presenti altri tipi di orologi \textit{real-time}, ciascuno dei quali viene
+identificato da un opportuno valore di una variabile di tipo
+\type{clockid\_t}; un elenco di quelli disponibili su Linux è riportato in
+tab.~\ref{tab:sig_timer_clockid_types}.
% TODO: dal 4.17 CLOCK_MONOTONIC e CLOCK_BOOTTIME sono identici vedi
% https://lwn.net/Articles/751651/ e