Materuale vario, correzioni e aggiornamenti sulla code di messaggi
[gapil.git] / signal.tex
index 982fc68cfd3a2acb1f135d120e9555a5552f0969..f6ca908c2d04f21ced56256fe02305144271a9c4 100644 (file)
@@ -1,6 +1,6 @@
 %% signal.tex
 %%
-%% Copyright (C) 2000-2012 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
@@ -1781,13 +1781,13 @@ fig.~\ref{fig:sig_sleep_wrong}.
 
 Dato che è nostra intenzione utilizzare \signal{SIGALRM} il primo passo della
 nostra implementazione sarà quello di installare il relativo gestore salvando
-il precedente (\texttt{\small 14-17}).  Si effettuerà poi una chiamata ad
+il precedente (\texttt{\small 14--17}).  Si effettuerà poi una chiamata ad
 \func{alarm} per specificare il tempo d'attesa per l'invio del segnale a cui
 segue la chiamata a \func{pause} per fermare il programma (\texttt{\small
-  18-20}) fino alla sua ricezione.  Al ritorno di \func{pause}, causato dal
-ritorno del gestore (\texttt{\small 1-9}), si ripristina il gestore originario
-(\texttt{\small 21-22}) restituendo l'eventuale tempo rimanente
-(\texttt{\small 23-24}) che potrà essere diverso da zero qualora
+  18--20}) fino alla sua ricezione.  Al ritorno di \func{pause}, causato dal
+ritorno del gestore (\texttt{\small 1--9}), si ripristina il gestore originario
+(\texttt{\small 21--22}) restituendo l'eventuale tempo rimanente
+(\texttt{\small 23--24}) che potrà essere diverso da zero qualora
 l'interruzione di \func{pause} venisse causata da un altro segnale.
 
 Questo codice però, a parte il non gestire il caso in cui si è avuta una
@@ -1816,11 +1816,11 @@ codice del tipo di quello riportato in fig.~\ref{fig:sig_sleep_incomplete}.
   \label{fig:sig_sleep_incomplete}
 \end{figure}
 
-In questo caso il gestore (\texttt{\small 18-27}) non ritorna come in
+In questo caso il gestore (\texttt{\small 18--27}) non ritorna come in
 fig.~\ref{fig:sig_sleep_wrong}, ma usa la funzione \func{longjmp}
 (\texttt{\small 25}) per rientrare direttamente nel corpo principale del
 programma. Dato che in questo caso il valore di uscita che verrà restituito da
-\func{setjmp} è 1, grazie alla condizione impostata in (\texttt{\small 9-12})
+\func{setjmp} è 1, grazie alla condizione impostata in (\texttt{\small 9--12})
 si potrà evitare comunque che \func{pause} sia chiamata a vuoto.
 
 Ma anche questa implementazione comporta dei problemi, in questo caso infatti
@@ -1838,11 +1838,11 @@ da controllare nel corpo principale del programma, con un codice del tipo di
 quello riportato in fig.~\ref{fig:sig_event_wrong}.
 
 La logica del programma è quella di far impostare al gestore (\texttt{\small
-  14-19}) una \index{variabili!globali} variabile globale, preventivamente
+  14--19}) una \index{variabili!globali} variabile globale, preventivamente
 inizializzata nel programma principale, ad un diverso valore. In questo modo
 dal corpo principale del programma si potrà determinare, osservandone il
 contenuto di detta variabile, l'occorrenza o meno del segnale, ed eseguire le
-azioni conseguenti (\texttt{\small 6-11}) relative.
+azioni conseguenti (\texttt{\small 6--11}) relative.
 
 \begin{figure}[!htbp]
   \footnotesize\centering
@@ -2508,14 +2508,14 @@ presenta neanche questa necessità.
  
 Per evitare i problemi di interferenza con gli altri segnali in questo caso
 non si è usato l'approccio di fig.~\ref{fig:sig_sleep_incomplete} evitando
-l'uso di \func{longjmp}. Come in precedenza il gestore (\texttt{\small 27-30})
-non esegue nessuna operazione, limitandosi a ritornare per interrompere il
-programma messo in attesa.
+l'uso di \func{longjmp}. Come in precedenza il gestore (\texttt{\small
+  27--30}) non esegue nessuna operazione, limitandosi a ritornare per
+interrompere il programma messo in attesa.
 
-La prima parte della funzione (\texttt{\small 6-10}) provvede ad installare
+La prima parte della funzione (\texttt{\small 6--10}) provvede ad installare
 l'opportuno gestore per \signal{SIGALRM}, salvando quello originario, che
 sarà ripristinato alla conclusione della stessa (\texttt{\small 23}); il passo
-successivo è quello di bloccare \signal{SIGALRM} (\texttt{\small 11-14}) per
+successivo è quello di bloccare \signal{SIGALRM} (\texttt{\small 11--14}) per
 evitare che esso possa essere ricevuto dal processo fra l'esecuzione di
 \func{alarm} (\texttt{\small 16}) e la sospensione dello stesso. Nel fare
 questo si salva la maschera corrente dei segnali, che sarà ripristinata alla
@@ -3056,9 +3056,9 @@ tab.~\ref{tab:sig_timer_clockid_types}.
 \end{table}
 
 
-% NOTE: dal 2.6.39 anche CLOCK_BOOTTIME_ALARM e CLOCK_BOOTTIME
 % NOTE: dal 3.0 anche i cosiddetti Posix Alarm Timers, con
 % CLOCK_REALTIME_ALARM vedi http://lwn.net/Articles/429925/
+% TODO: dal 3.10 anche CLOCK_TAI 
 
 Per poter utilizzare queste funzionalità le \acr{glibc} richiedono che la
 macro \macro{\_POSIX\_C\_SOURCE} sia definita ad un valore maggiore o uguale
@@ -3274,7 +3274,7 @@ prototipo è:
 \fhead{time.h}
 \fdecl{int timer\_create(clockid\_t clockid, struct sigevent *evp,
     timer\_t *timerid)}
-\fdesc{Crea un nuovo timer Posix.} 
+\fdesc{Crea un nuovo timer POSIX.} 
 }
 
 {La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
@@ -3415,7 +3415,7 @@ identificatore, si può attivare o disattivare un allarme (in gergo
 \fhead{time.h}
 \fdecl{int timer\_settime(timer\_t timerid, int flags, const struct
     itimerspec *new\_value, struct itimerspec *old\_value)}
-\fdesc{Arma o disarma un timer POSIX..
+\fdesc{Arma o disarma un timer POSIX.} 
 }
 
 {La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
@@ -3592,7 +3592,7 @@ un timer venga cancellato prima della ricezione del segnale pendente per la
 notifica di una scadenza, il comportamento del sistema è indefinito.
 
 Infine a partire dal kernel 2.6 e per le versioni della \acr{libc} superiori
-alla 2.1, si può utilizzare la nuova interfaccia dei timer Posix anche per le
+alla 2.1, si può utilizzare la nuova interfaccia dei timer POSIX anche per le
 funzioni di attesa, per questo è disponibile la funzione di sistema
 \funcd{clock\_nanosleep}, il cui prototipo è: