Correzioni multiple agli indici delle funzioni, inserita macro per
[gapil.git] / signal.tex
index 644e05ddf0fef962aa3bb795a68eb4f58ee27965..ae4c057b0bc8e840034f83e3325a8977710ff491 100644 (file)
@@ -1,6 +1,6 @@
 %% signal.tex
 %%
-%% Copyright (C) 2000-2011 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2012 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",
@@ -103,9 +103,9 @@ viene perso (se l'impostazione predefinita era quello di ignorarlo) o la
 terminazione immediata del processo; in entrambi i casi l'azione prevista non
 verrà eseguita.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/unreliable_sig.c}
   \end{minipage} 
   \normalsize 
@@ -230,7 +230,7 @@ i segnali successivi alla nuova specificazione saranno notificati).
 
 Una volta che un segnale viene notificato (che questo avvenga subito o dopo
 una attesa più o meno lunga) viene eseguita l'azione specificata per il
-segnale. Per alcuni segnali (\const{SIGKILL} e \const{SIGSTOP}) questa azione
+segnale. Per alcuni segnali (\signal{SIGKILL} e \signal{SIGSTOP}) questa azione
 è fissa e non può essere cambiata, ma per tutti gli altri si può selezionare
 una  delle tre possibilità seguenti:
 
@@ -282,12 +282,12 @@ di identificarli, e le funzioni che ne stampano la descrizione.
 Ciascun segnale è identificato rispetto al sistema da un numero, ma l'uso
 diretto di questo numero da parte dei programmi è da evitare, in quanto esso
 può variare a seconda dell'implementazione del sistema, e nel caso di Linux,
-anche a seconda dell'architettura hardware. 
-Per questo motivo ad ogni segnale viene associato un nome, definendo con una
-macro di preprocessore una costante uguale al suddetto numero. Sono questi
-nomi, che sono standardizzati e sostanzialmente uniformi rispetto alle varie
-implementazioni, che si devono usare nei programmi. Tutti i nomi e le funzioni
-che concernono i segnali sono definiti nell'header di sistema \file{signal.h}.
+anche a seconda dell'architettura hardware.  Per questo motivo ad ogni segnale
+viene associato un nome, definendo con una macro di preprocessore una costante
+uguale al suddetto numero. Sono questi nomi, che sono standardizzati e
+sostanzialmente uniformi rispetto alle varie implementazioni, che si devono
+usare nei programmi. Tutti i nomi e le funzioni che concernono i segnali sono
+definiti nell'header di sistema \headfile{signal.h}.
 
 Il numero totale di segnali presenti è dato dalla macro \const{NSIG}, e dato
 che i numeri dei segnali sono allocati progressivamente, essa corrisponde
@@ -352,59 +352,59 @@ cui viene salvata un'immagine della memoria del processo (il cosiddetto
 per esaminare lo stato dello \itindex{stack} \textit{stack} e delle variabili
 al momento della ricezione del segnale.
 
-\begin{table}[htb]
+\begin{table}[!htb]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|c|c|p{8cm}|}
+  \begin{tabular}[c]{|l|c|c|l|}
     \hline
     \textbf{Segnale} &\textbf{Standard}&\textbf{Azione}&\textbf{Descrizione} \\
     \hline
     \hline
-    \const{SIGHUP}   &PL & A & Hangup o terminazione del processo di 
+    \signal{SIGHUP}  &PL & A & Hangup o terminazione del processo di 
                                controllo.                                    \\
-    \const{SIGINT}   &PL & A & Interrupt da tastiera (\cmd{C-c}).            \\
-    \const{SIGQUIT}  &PL & C & Quit da tastiera (\cmd{C-y}).                 \\
-    \const{SIGILL}   &PL & C & Istruzione illecita.                          \\
-    \const{SIGABRT}  &PL & C & Segnale di abort da \func{abort}.             \\
-    \const{SIGFPE}   &PL & C & Errore aritmetico.                            \\
-    \const{SIGKILL}  &PL &AEF& Segnale di terminazione forzata.              \\
-    \const{SIGSEGV}  &PL & C & Errore di accesso in memoria.                 \\
-    \const{SIGPIPE}  &PL & A & Pipe spezzata.                                \\
-    \const{SIGALRM}  &PL & A & Segnale del timer da \func{alarm}.            \\
-    \const{SIGTERM}  &PL & A & Segnale di terminazione \texttt{C-\bslash}.   \\
-    \const{SIGUSR1}  &PL & A & Segnale utente numero 1.                      \\
-    \const{SIGUSR2}  &PL & A & Segnale utente numero 2.                      \\
-    \const{SIGCHLD}  &PL & B & Figlio terminato o fermato.                   \\
-    \const{SIGCONT}  &PL &   & Continua se fermato.                          \\
-    \const{SIGSTOP}  &PL &DEF& Ferma il processo.                            \\
-    \const{SIGTSTP}  &PL & D & Pressione del tasto di stop sul terminale.    \\
-    \const{SIGTTIN}  &PL & D & Input sul terminale per un processo 
+    \signal{SIGINT}  &PL & A & Interrupt da tastiera (\cmd{C-c}).            \\
+    \signal{SIGQUIT} &PL & C & Quit da tastiera (\cmd{C-y}).                 \\
+    \signal{SIGILL}  &PL & C & Istruzione illecita.                          \\
+    \signal{SIGABRT} &PL & C & Segnale di abort da \func{abort}.             \\
+    \signal{SIGFPE}  &PL & C & Errore aritmetico.                            \\
+    \signal{SIGKILL} &PL &AEF& Segnale di terminazione forzata.              \\
+    \signal{SIGSEGV} &PL & C & Errore di accesso in memoria.                 \\
+    \signal{SIGPIPE} &PL & A & Pipe spezzata.                                \\
+    \signal{SIGALRM} &PL & A & Segnale del timer da \func{alarm}.            \\
+    \signal{SIGTERM} &PL & A & Segnale di terminazione \texttt{C-\bslash}.   \\
+    \signal{SIGUSR1} &PL & A & Segnale utente numero 1.                      \\
+    \signal{SIGUSR2} &PL & A & Segnale utente numero 2.                      \\
+    \signal{SIGCHLD} &PL & B & Figlio terminato o fermato.                   \\
+    \signal{SIGCONT} &PL &   & Continua se fermato.                          \\
+    \signal{SIGSTOP} &PL &DEF& Ferma il processo.                            \\
+    \signal{SIGTSTP} &PL & D & Pressione del tasto di stop sul terminale.    \\
+    \signal{SIGTTIN} &PL & D & Input sul terminale per un processo 
                                in background.                                \\
-    \const{SIGTTOU}  &PL & D & Output sul terminale per un processo          
+    \signal{SIGTTOU} &PL & D & Output sul terminale per un processo          
                                in background.                                \\
-    \const{SIGBUS}   &SL & C & Errore sul bus (bad memory access).           \\
-    \const{SIGPOLL}  &SL & A & \textit{Pollable event} (Sys V);  
-                               Sinonimo di \const{SIGIO}.                    \\
-    \const{SIGPROF}  &SL & A & Timer del profiling scaduto.                  \\
-    \const{SIGSYS}   &SL & C & Argomento sbagliato per una subroutine (SVID).\\
-    \const{SIGTRAP}  &SL & C & Trappole per un Trace/breakpoint.             \\
-    \const{SIGURG}   &SLB& B & Ricezione di una \textit{urgent condition} su 
+    \signal{SIGBUS}  &SL & C & Errore sul bus (bad memory access).           \\
+    \signal{SIGPOLL} &SL & A & \textit{Pollable event} (Sys V);  
+                               Sinonimo di \signal{SIGIO}.                   \\
+    \signal{SIGPROF} &SL & A & Timer del profiling scaduto.                  \\
+    \signal{SIGSYS}  &SL & C & Argomento sbagliato per una subroutine (SVID).\\
+    \signal{SIGTRAP} &SL & C & Trappole per un Trace/breakpoint.             \\
+    \signal{SIGURG}  &SLB& B & Ricezione di una \textit{urgent condition} su 
                                un socket. \\
-    \const{SIGVTALRM}&SLB& A & Timer di esecuzione scaduto.                  \\
-    \const{SIGXCPU}  &SLB& C & Ecceduto il limite sul tempo di CPU.          \\
-    \const{SIGXFSZ}  &SLB& C & Ecceduto il limite sulla dimensione dei file. \\
-    \const{SIGIOT}   &L  & C & IOT trap. Sinonimo di \const{SIGABRT}.        \\
-    \const{SIGEMT}   &L  &   &                                               \\
+    \signal{SIGVTALRM}&SLB& A & Timer di esecuzione scaduto.                 \\
+    \signal{SIGXCPU}  &SLB& C & Ecceduto il limite sul tempo di CPU.         \\
+    \signal{SIGXFSZ}  &SLB& C & Ecceduto il limite sulla dimensione dei file.\\
+    \signal{SIGIOT}   &L  & C & IOT trap. Sinonimo di \signal{SIGABRT}.      \\
+    \signal{SIGEMT}   &L  &   &                                              \\
 % TODO che roba e` SIGEMT
-    \const{SIGSTKFLT}&L  & A & Errore sullo stack del coprocessore.          \\
-    \const{SIGIO}    &LB & A & L'I/O è possibile (4.2 BSD).                  \\
-    \const{SIGCLD}   &L  &   & Sinonimo di \const{SIGCHLD}.                  \\
-    \const{SIGPWR}   &L  & A & Fallimento dell'alimentazione.                \\
-    \const{SIGINFO}  &L  &   & Sinonimo di \const{SIGPWR}.                   \\
-    \const{SIGLOST}  &L  & A & Perso un lock sul file (per NFS).             \\
-    \const{SIGWINCH} &LB & B & Finestra ridimensionata (4.3 BSD, Sun).       \\
-    \const{SIGUNUSED}&L  & A & Segnale inutilizzato (diventerà 
-                               \const{SIGSYS}).                              \\
+    \signal{SIGSTKFLT}&L  & A & Errore sullo stack del coprocessore.         \\
+    \signal{SIGIO}    &LB & A & L'I/O è possibile (4.2 BSD).                 \\
+    \signal{SIGCLD}   &L  &   & Sinonimo di \signal{SIGCHLD}.                \\
+    \signal{SIGPWR}   &L  & A & Fallimento dell'alimentazione.               \\
+    \signal{SIGINFO}  &L  &   & Sinonimo di \signal{SIGPWR}.                 \\
+    \signal{SIGLOST}  &L  & A & Perso un lock sul file (per NFS).            \\
+    \signal{SIGWINCH} &LB & B & Finestra ridimensionata (4.3 BSD, Sun).      \\
+    \signal{SIGUNUSED}&L  & A & Segnale inutilizzato (diventerà 
+                               \signal{SIGSYS}).                             \\
     \hline
   \end{tabular}
   \caption{Lista dei segnali in Linux.}
@@ -440,19 +440,19 @@ che viene scritto in un file \file{core} nella directory corrente del processo
 al momento dell'errore, che il debugger può usare per ricostruire lo stato del
 programma al momento della terminazione.  Questi segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\const{SIGFPE}] Riporta un errore aritmetico fatale. Benché il nome
+\item[\signal{SIGFPE}] Riporta un errore aritmetico fatale. Benché il nome
   derivi da \textit{floating point exception} si applica a tutti gli errori
   aritmetici compresa la divisione per zero e l'overflow.  Se il gestore
   ritorna il comportamento del processo è indefinito, ed ignorare questo
   segnale può condurre ad un ciclo infinito.
 
 %   Per questo segnale le cose sono complicate dal fatto che possono esserci
-%   molte diverse eccezioni che \texttt{SIGFPE} non distingue, mentre lo
+%   molte diverse eccezioni che \signal{SIGFPE} non distingue, mentre lo
 %   standard IEEE per le operazioni in virgola mobile definisce varie eccezioni
 %   aritmetiche e richiede che esse siano notificate.
 % TODO trovare altre info su SIGFPE e trattare la notifica delle eccezioni 
   
-\item[\const{SIGILL}] Il nome deriva da \textit{illegal instruction},
+\item[\signal{SIGILL}] Il nome deriva da \textit{illegal instruction},
   significa che il programma sta cercando di eseguire una istruzione
   privilegiata o inesistente, in generale del codice illecito. Poiché il
   compilatore del C genera del codice valido si ottiene questo segnale se il
@@ -463,7 +463,7 @@ programma al momento della terminazione.  Questi segnali sono:
   \textit{stack}. Lo stesso segnale viene generato in caso di overflow dello
   \itindex{stack} \textit{stack} o di problemi nell'esecuzione di un gestore.
   Se il gestore ritorna il comportamento del processo è indefinito.
-\item[\const{SIGSEGV}] Il nome deriva da \itindex{segment~violation}
+\item[\signal{SIGSEGV}] Il nome deriva da \itindex{segment~violation}
   \textit{segment violation}, e significa che il programma sta cercando di
   leggere o scrivere in una zona di memoria protetta al di fuori di quella che
   gli è stata riservata dal sistema. In genere è il meccanismo della
@@ -472,20 +472,20 @@ programma al momento della terminazione.  Questi segnali sono:
 
   È tipico ottenere questo segnale dereferenziando un puntatore nullo o non
   inizializzato leggendo al di là della fine di un vettore. 
-\item[\const{SIGBUS}] Il nome deriva da \textit{bus error}. Come
-  \const{SIGSEGV} questo è un segnale che viene generato di solito quando si
+\item[\signal{SIGBUS}] Il nome deriva da \textit{bus error}. Come
+  \signal{SIGSEGV} questo è un segnale che viene generato di solito quando si
   dereferenzia un puntatore non inizializzato, la differenza è che
-  \const{SIGSEGV} indica un accesso non permesso su un indirizzo esistente
+  \signal{SIGSEGV} indica un accesso non permesso su un indirizzo esistente
   (tipo fuori dallo heap o dallo \itindex{stack} \textit{stack}), mentre
-  \const{SIGBUS} indica l'accesso ad un indirizzo non valido, come nel caso di
+  \signal{SIGBUS} indica l'accesso ad un indirizzo non valido, come nel caso di
   un puntatore non allineato.
-\item[\const{SIGABRT}] Il nome deriva da \textit{abort}. Il segnale indica che
+\item[\signal{SIGABRT}] Il nome deriva da \textit{abort}. Il segnale indica che
   il programma stesso ha rilevato un errore che viene riportato chiamando la
   funzione \func{abort} che genera questo segnale.
-\item[\const{SIGTRAP}] È il segnale generato da un'istruzione di breakpoint o
+\item[\signal{SIGTRAP}] È il segnale generato da un'istruzione di breakpoint o
   dall'attivazione del tracciamento per il processo. È usato dai programmi per
   il debugging e un programma normale non dovrebbe ricevere questo segnale.
-\item[\const{SIGSYS}] Sta ad indicare che si è eseguita una istruzione che
+\item[\signal{SIGSYS}] Sta ad indicare che si è eseguita una istruzione che
   richiede l'esecuzione di una system call, ma si è fornito un codice
   sbagliato per quest'ultima.
 \end{basedescript}
@@ -508,18 +508,18 @@ periferica).
 L'azione predefinita di questi segnali è di terminare il processo, questi
 segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\const{SIGTERM}] Il nome sta per \textit{terminate}. È un segnale
+\item[\signal{SIGTERM}] Il nome sta per \textit{terminate}. È un segnale
   generico usato per causare la conclusione di un programma. Al contrario di
-  \const{SIGKILL} può essere intercettato, ignorato, bloccato. In genere lo si
+  \signal{SIGKILL} può essere intercettato, ignorato, bloccato. In genere lo si
   usa per chiedere in maniera ``\textsl{educata}'' ad un processo di
   concludersi.
 
-\item[\const{SIGINT}] Il nome sta per \textit{interrupt}. È il segnale di
+\item[\signal{SIGINT}] Il nome sta per \textit{interrupt}. È il segnale di
   interruzione per il programma. È quello che viene generato di default dal
   comando \cmd{kill} o dall'invio sul terminale del carattere di controllo
   INTR (interrupt, generato dalla sequenza \cmd{C-c}).
 
-\item[\const{SIGQUIT}] È analogo a \const{SIGINT} con la differenza che è
+\item[\signal{SIGQUIT}] È analogo a \signal{SIGINT} con la differenza che è
   controllato da un altro carattere di controllo, QUIT, corrispondente alla
   sequenza \texttt{C-\bslash}. A differenza del precedente l'azione
   predefinita, oltre alla terminazione del processo, comporta anche la
@@ -533,22 +533,22 @@ segnali sono:
   \textit{core dump}.
   
 
-\item[\const{SIGKILL}] Il nome è utilizzato per terminare in maniera immediata
+\item[\signal{SIGKILL}] Il nome è utilizzato per terminare in maniera immediata
   qualunque programma. Questo segnale non può essere né intercettato, né
   ignorato, né bloccato, per cui causa comunque la terminazione del processo.
   In genere esso viene generato solo per richiesta esplicita dell'utente dal
   comando (o tramite la funzione) \cmd{kill}. Dato che non lo si può
   intercettare è sempre meglio usarlo come ultima risorsa quando metodi meno
-  brutali, come \const{SIGTERM} o \cmd{C-c} non funzionano. 
+  brutali, come \signal{SIGTERM} o \cmd{C-c} non funzionano. 
 
-  Se un processo non risponde a nessun altro segnale \const{SIGKILL} ne causa
+  Se un processo non risponde a nessun altro segnale \signal{SIGKILL} ne causa
   sempre la terminazione (in effetti il fallimento della terminazione di un
-  processo da parte di \const{SIGKILL} costituirebbe un malfunzionamento del
+  processo da parte di \signal{SIGKILL} costituirebbe un malfunzionamento del
   kernel). Talvolta è il sistema stesso che può generare questo segnale quando
   per condizioni particolari il processo non può più essere eseguito neanche
   per eseguire un gestore.
 
-\item[\const{SIGHUP}] Il nome sta per \textit{hang-up}. Segnala che il
+\item[\signal{SIGHUP}] Il nome sta per \textit{hang-up}. Segnala che il
   terminale dell'utente si è disconnesso (ad esempio perché si è interrotta la
   rete). Viene usato anche per riportare la terminazione del processo di
   controllo di un terminale a tutti i processi della sessione, in modo che
@@ -569,7 +569,7 @@ causare la terminazione del programma, ma con questi segnali la scelta
 predefinita è irrilevante, in quanto il loro uso presuppone sempre la
 necessità di un gestore.  Questi segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\const{SIGALRM}] Il nome sta per \textit{alarm}. Segnale la scadenza di
+\item[\signal{SIGALRM}] Il nome sta per \textit{alarm}. Segnale la scadenza di
   un timer misurato sul tempo reale o sull'orologio di sistema. È normalmente
   usato dalla funzione \func{alarm}.
 
@@ -577,7 +577,7 @@ necessità di un gestore.  Questi segnali sono:
   precedente ma segnala la scadenza di un timer sul tempo di CPU usato dal
   processo. 
 
-\item[\const{SIGPROF}] Il nome sta per \textit{profiling}. Indica la scadenza
+\item[\signal{SIGPROF}] Il nome sta per \textit{profiling}. Indica la scadenza
   di un timer che misura sia il tempo di CPU speso direttamente dal processo
   che quello che il sistema ha speso per conto di quest'ultimo. In genere
   viene usato dagli strumenti che servono a fare la profilazione dell'utilizzo
@@ -593,18 +593,18 @@ questo occorre comunque usare \func{fcntl} per abilitare un file descriptor a
 generare questi segnali.  L'azione predefinita è di essere ignorati. Questi
 segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\const{SIGIO}] Questo segnale viene inviato quando un file descriptor è
+\item[\signal{SIGIO}] Questo segnale viene inviato quando un file descriptor è
   pronto per eseguire dell'input/output. In molti sistemi solo i
   socket e i terminali possono generare questo segnale, in Linux
   questo può essere usato anche per i file, posto che la \func{fcntl} abbia
   avuto successo.
 
-\item[\const{SIGURG}] Questo segnale è inviato quando arrivano dei dati
+\item[\signal{SIGURG}] Questo segnale è inviato quando arrivano dei dati
   urgenti o \itindex{out-of-band} \textit{out-of-band} su di un
   socket; per maggiori dettagli al proposito si veda
   sez.~\ref{sec:TCP_urgent_data}.
 
-\item[\const{SIGPOLL}] Questo segnale è equivalente a \const{SIGIO}, è
+\item[\signal{SIGPOLL}] Questo segnale è equivalente a \signal{SIGIO}, è
   definito solo per compatibilità con i sistemi System V.
 \end{basedescript}
 
@@ -616,16 +616,16 @@ Questi sono i segnali usati dal controllo delle sessioni e dei processi, il
 loro uso è specializzato e viene trattato in maniera specifica nelle sezioni
 in cui si trattano gli argomenti relativi.  Questi segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\const{SIGCHLD}] Questo è il segnale mandato al processo padre quando un
+\item[\signal{SIGCHLD}] Questo è il segnale mandato al processo padre quando un
   figlio termina o viene fermato. L'azione predefinita è di ignorare il
   segnale, la sua gestione è trattata in sez.~\ref{sec:proc_wait}.
 
-\item[\const{SIGCLD}] Per Linux questo è solo un segnale identico al
+\item[\signal{SIGCLD}] Per Linux questo è solo un segnale identico al
   precedente, il nome è obsoleto e andrebbe evitato. 
 
-\item[\const{SIGCONT}] Il nome sta per \textit{continue}. Il segnale viene
+\item[\signal{SIGCONT}] Il nome sta per \textit{continue}. Il segnale viene
   usato per fare ripartire un programma precedentemente fermato da
-  \const{SIGSTOP}. Questo segnale ha un comportamento speciale, e fa sempre
+  \signal{SIGSTOP}. Questo segnale ha un comportamento speciale, e fa sempre
   ripartire il processo prima della sua consegna. Il comportamento predefinito
   è di fare solo questo; il segnale non può essere bloccato. Si può anche
   installare un gestore, ma il segnale provoca comunque il riavvio del
@@ -637,27 +637,27 @@ in cui si trattano gli argomenti relativi.  Questi segnali sono:
   gestori per far si che un programma produca una qualche azione speciale
   se viene fermato e riavviato, come per esempio riscrivere un prompt, o
   inviare un avviso. 
-\item[\const{SIGSTOP}] Il segnale ferma un processo (lo porta cioè in uno
+\item[\signal{SIGSTOP}] Il segnale ferma un processo (lo porta cioè in uno
   stato di sleep, vedi sez.~\ref{sec:proc_sched}); il segnale non può essere né
   intercettato, né ignorato, né bloccato.
 
-\item[\const{SIGTSTP}] Il nome sta per \textit{interactive stop}. Il segnale
+\item[\signal{SIGTSTP}] Il nome sta per \textit{interactive stop}. Il segnale
   ferma il processo interattivamente, ed è generato dal carattere SUSP
   (prodotto dalla combinazione \cmd{C-z}), ed al contrario di
-  \const{SIGSTOP} può essere intercettato e ignorato. In genere un programma
+  \signal{SIGSTOP} può essere intercettato e ignorato. In genere un programma
   installa un gestore per questo segnale quando vuole lasciare il sistema
   o il terminale in uno stato definito prima di fermarsi; se per esempio un
   programma ha disabilitato l'eco sul terminale può installare un gestore
   per riabilitarlo prima di fermarsi.
 
-\item[\const{SIGTTIN}] Un processo non può leggere dal terminale se esegue una
+\item[\signal{SIGTTIN}] Un processo non può leggere dal terminale se esegue una
   sessione di lavoro in \textit{background}. Quando un processo in background
   tenta di leggere da un terminale viene inviato questo segnale a tutti i
   processi della sessione di lavoro. L'azione predefinita è di fermare il
   processo.  L'argomento è trattato in
   sez.~\ref{sec:sess_job_control_overview}.
 
-\item[\const{SIGTTOU}] Segnale analogo al precedente \const{SIGTTIN}, ma
+\item[\signal{SIGTTOU}] Segnale analogo al precedente \signal{SIGTTIN}, ma
   generato quando si tenta di scrivere o modificare uno dei modi del
   terminale. L'azione predefinita è di fermare il processo, l'argomento è
   trattato in sez.~\ref{sec:sess_job_control_overview}.
@@ -673,23 +673,23 @@ che impediscono il completamento dell'esecuzione dovute all'interazione con il
 resto del sistema.  L'azione predefinita di questi segnali è di terminare il
 processo, questi segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\const{SIGPIPE}] Sta per \textit{Broken pipe}. Se si usano delle pipe,
+\item[\signal{SIGPIPE}] Sta per \textit{Broken pipe}. Se si usano delle pipe,
   (o delle FIFO o dei socket) è necessario, prima che un processo inizi a
   scrivere su una di esse, che un altro l'abbia aperta in lettura (si veda
   sez.~\ref{sec:ipc_pipes}). Se il processo in lettura non è partito o è
   terminato inavvertitamente alla scrittura sulla pipe il kernel genera questo
   segnale. Se il segnale è bloccato, intercettato o ignorato la chiamata che
   lo ha causato fallisce, restituendo l'errore \errcode{EPIPE}.
-\item[\const{SIGLOST}] Sta per \textit{Resource lost}. Tradizionalmente è il
+\item[\signal{SIGLOST}] Sta per \textit{Resource lost}. Tradizionalmente è il
   segnale che viene generato quando si perde un advisory lock su un file su
   NFS perché il server NFS è stato riavviato. Il progetto GNU lo utilizza per
   indicare ad un client il crollo inaspettato di un server. In Linux è
-  definito come sinonimo di \const{SIGIO}.\footnote{ed è segnalato come BUG
+  definito come sinonimo di \signal{SIGIO}.\footnote{ed è segnalato come BUG
     nella pagina di manuale.}
-\item[\const{SIGXCPU}] Sta per \textit{CPU time limit exceeded}. Questo
+\item[\signal{SIGXCPU}] Sta per \textit{CPU time limit exceeded}. Questo
   segnale è generato quando un processo eccede il limite impostato per il
   tempo di CPU disponibile, vedi sez.~\ref{sec:sys_resource_limit}. 
-\item[\const{SIGXFSZ}] Sta per \textit{File size limit exceeded}. Questo
+\item[\signal{SIGXFSZ}] Sta per \textit{File size limit exceeded}. Questo
   segnale è generato quando un processo tenta di estendere un file oltre le
   dimensioni specificate dal limite impostato per le dimensioni massime di un
   file, vedi sez.~\ref{sec:sys_resource_limit}. 
@@ -702,20 +702,20 @@ processo, questi segnali sono:
 Raccogliamo qui infine una serie di segnali che hanno scopi differenti non
 classificabili in maniera omogenea. Questi segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\const{SIGUSR1}] Insieme a \const{SIGUSR2} è un segnale a disposizione
+\item[\signal{SIGUSR1}] Insieme a \signal{SIGUSR2} è un segnale a disposizione
   dell'utente che lo può usare per quello che vuole. Viene generato solo
   attraverso l'invocazione della funzione \func{kill}. Entrambi i segnali
   possono essere utili per implementare una comunicazione elementare fra
   processi diversi, o per eseguire a richiesta una operazione utilizzando un
   gestore. L'azione predefinita è di terminare il processo.
-\item[\const{SIGUSR2}] È il secondo segnale a disposizione degli utenti. Vedi
-  quanto appena detto per \const{SIGUSR1}.
-\item[\const{SIGWINCH}] Il nome sta per \textit{window (size) change} e viene
+\item[\signal{SIGUSR2}] È il secondo segnale a disposizione degli utenti. Vedi
+  quanto appena detto per \signal{SIGUSR1}.
+\item[\signal{SIGWINCH}] Il nome sta per \textit{window (size) change} e viene
   generato in molti sistemi (GNU/Linux compreso) quando le dimensioni (in
   righe e colonne) di un terminale vengono cambiate. Viene usato da alcuni
   programmi testuali per riformattare l'uscita su schermo quando si cambia
   dimensione a quest'ultimo. L'azione predefinita è di essere ignorato.
-\item[\const{SIGINFO}] Il segnale indica una richiesta di informazioni. È
+\item[\signal{SIGINFO}] Il segnale indica una richiesta di informazioni. È
   usato con il controllo di sessione, causa la stampa di informazioni da parte
   del processo leader del gruppo associato al terminale di controllo, gli
   altri processi lo ignorano.
@@ -751,8 +751,8 @@ La seconda funzione, \funcd{psignal}, deriva da BSD ed è analoga alla funzione
 
 Una modalità alternativa per utilizzare le descrizioni restituite da
 \func{strsignal} e \func{psignal} è quello di usare la variabile
-\var{sys\_siglist}, che è definita in \file{signal.h} e può essere acceduta
-con la dichiarazione:
+\var{sys\_siglist}, che è definita in \headfile{signal.h} e può essere
+acceduta con la dichiarazione:
 \includecodesnip{listati/siglist.c}
 
 L'array \var{sys\_siglist} contiene i puntatori alle stringhe di descrizione,
@@ -802,18 +802,19 @@ che non sono presenti nello spazio di indirizzi del nuovo programma.
 Si noti che questo vale solo per le azioni per le quali è stato installato un
 gestore; viene mantenuto invece ogni eventuale impostazione dell'azione a
 \const{SIG\_IGN}. Questo permette ad esempio alla shell di impostare ad
-\const{SIG\_IGN} le risposte per \const{SIGINT} e \const{SIGQUIT} per i
+\const{SIG\_IGN} le risposte per \signal{SIGINT} e \signal{SIGQUIT} per i
 programmi eseguiti in background, che altrimenti sarebbero interrotti da una
 successiva pressione di \texttt{C-c} o \texttt{C-y}.
 
-Per quanto riguarda il comportamento di tutte le altre system call si danno
-sostanzialmente due casi, a seconda che esse siano \index{system~call~lente}
-\textsl{lente} (\textit{slow}) o \textsl{veloci} (\textit{fast}). La gran
-parte di esse appartiene a quest'ultima categoria, che non è influenzata
-dall'arrivo di un segnale. Esse sono dette \textsl{veloci} in quanto la loro
-esecuzione è sostanzialmente immediata; la risposta al segnale viene sempre
-data dopo che la system call è stata completata, in quanto attendere per
-eseguire un gestore non comporta nessun inconveniente.
+Per quanto riguarda il comportamento di tutte le altre \textit{system call} si
+danno sostanzialmente due casi, a seconda che esse siano
+\index{system~call~lente} \textsl{lente} (\textit{slow}) o \textsl{veloci}
+(\textit{fast}). La gran parte di esse appartiene a quest'ultima categoria,
+che non è influenzata dall'arrivo di un segnale. Esse sono dette
+\textsl{veloci} in quanto la loro esecuzione è sostanzialmente immediata; la
+risposta al segnale viene sempre data dopo che la \textit{system call} è stata
+completata, in quanto attendere per eseguire un gestore non comporta nessun
+inconveniente.
 
 In alcuni casi però alcune system call (che per questo motivo vengono chiamate
 \textsl{lente}) possono bloccarsi indefinitamente. In questo caso non si può
@@ -917,7 +918,7 @@ L'argomento \param{handler} che indica il gestore invece, oltre all'indirizzo
 della funzione da chiamare all'occorrenza del segnale, può assumere anche i
 due valori costanti \const{SIG\_IGN} e \const{SIG\_DFL}; il primo indica che
 il segnale deve essere ignorato,\footnote{si ricordi però che i due segnali
-  \const{SIGKILL} e \const{SIGSTOP} non possono essere né ignorati né
+  \signal{SIGKILL} e \signal{SIGSTOP} non possono essere né ignorati né
   intercettati; l'uso di \const{SIG\_IGN} per questi segnali non ha alcun
   effetto.} mentre il secondo ripristina l'azione predefinita.\footnote{e
   serve a tornare al comportamento di default quando non si intende più
@@ -937,7 +938,7 @@ primi Unix in cui il gestore viene disinstallato alla sua chiamata, secondo la
 semantica inaffidabile; anche Linux seguiva questa convenzione con le vecchie
 librerie del C come le \acr{libc4} e le \acr{libc5}.\footnote{nelle
   \acr{libc5} esiste però la possibilità di includere \file{bsd/signal.h} al
-  posto di \file{signal.h}, nel qual caso la funzione \func{signal} viene
+  posto di \headfile{signal.h}, nel qual caso la funzione \func{signal} viene
   ridefinita per seguire la semantica affidabile usata da BSD.}
 
 Al contrario BSD segue la semantica affidabile, non disinstallando il gestore
@@ -945,15 +946,15 @@ e bloccando il segnale durante l'esecuzione dello stesso. Con l'utilizzo delle
 \acr{glibc} dalla versione 2 anche Linux è passato a questo comportamento.  Il
 comportamento della versione originale della funzione, il cui uso è deprecato
 per i motivi visti in sez.~\ref{sec:sig_semantics}, può essere ottenuto
-chiamando \func{sysv\_signal}, una volta che si sia definita la macro
+chiamando \funcm{sysv\_signal}, una volta che si sia definita la macro
 \macro{\_XOPEN\_SOURCE}.  In generale, per evitare questi problemi, l'uso di
 \func{signal}, che tra l'altro ha un comportamento indefinito in caso di
 processo \itindex{thread} multi-\textit{thread}, è da evitare; tutti i nuovi
 programmi dovrebbero usare \func{sigaction}.
 
 È da tenere presente che, seguendo lo standard POSIX, il comportamento di un
-processo che ignora i segnali \const{SIGFPE}, \const{SIGILL}, o
-\const{SIGSEGV} (qualora questi non originino da una chiamata ad una
+processo che ignora i segnali \signal{SIGFPE}, \signal{SIGILL}, o
+\signal{SIGSEGV} (qualora questi non originino da una chiamata ad una
 \func{kill} o ad una \func{raise}) è indefinito. Un gestore che ritorna da
 questi segnali può dare luogo ad un ciclo infinito.
 
@@ -1014,7 +1015,7 @@ specificare il segnale nullo.  Se la funzione viene chiamata con questo valore
 non viene inviato nessun segnale, ma viene eseguito il controllo degli errori,
 in tal caso si otterrà un errore \errcode{EPERM} se non si hanno i permessi
 necessari ed un errore \errcode{ESRCH} se il processo specificato non esiste.
-Si tenga conto però che il sistema ricicla i \acr{pid} (come accennato in
+Si tenga conto però che il sistema ricicla i \ids{PID} (come accennato in
 sez.~\ref{sec:proc_pid}) per cui l'esistenza di un processo non significa che
 esso sia realmente quello a cui si intendeva mandare il segnale.
 
@@ -1050,7 +1051,7 @@ Una seconda funzione che può essere definita in termini di \func{kill} è
     \textbf{Valore} & \textbf{Significato} \\
     \hline
     \hline
-    $>0$ & Il segnale è mandato al processo con il \acr{pid} indicato.\\
+    $>0$ & Il segnale è mandato al processo con il \ids{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}).\\
@@ -1064,10 +1065,10 @@ Una seconda funzione che può essere definita in termini di \func{kill} è
 \end{table}
 
 Solo l'amministratore può inviare un segnale ad un processo qualunque, in
-tutti gli altri casi l'user-ID reale o l'user-ID effettivo del processo
-chiamante devono corrispondere all'user-ID reale o all'user-ID salvato della
-destinazione. Fa eccezione il caso in cui il segnale inviato sia
-\const{SIGCONT}, nel quale occorre che entrambi i processi appartengano alla
+tutti gli altri casi l'\ids{UID} reale o l'\ids{UID} effettivo del processo
+chiamante devono corrispondere all'\ids{UID} reale o all'\ids{UID} salvato
+della destinazione. Fa eccezione il caso in cui il segnale inviato sia
+\signal{SIGCONT}, nel quale occorre che entrambi i processi appartengano alla
 stessa sessione. Inoltre, dato il ruolo fondamentale che riveste nel sistema
 (si ricordi quanto visto in sez.~\ref{sec:sig_termination}), non è possibile
 inviare al processo 1 (cioè a \cmd{init}) segnali per i quali esso non abbia
@@ -1085,12 +1086,12 @@ segnale al processo che ha effettuato la chiamata.
 \label{sec:sig_alarm_abort}
 
 Un caso particolare di segnali generati a richiesta è quello che riguarda i
-vari segnali di temporizzazione e \const{SIGABRT}, per ciascuno di questi
+vari segnali di temporizzazione e \signal{SIGABRT}, per ciascuno di questi
 segnali sono previste funzioni specifiche che ne effettuino l'invio. La più
 comune delle funzioni usate per la temporizzazione è \funcd{alarm} il cui
 prototipo è:
 \begin{prototype}{unistd.h}{unsigned int alarm(unsigned int seconds)}
-  Predispone l'invio di \const{SIGALRM} dopo \param{seconds} secondi.
+  Predispone l'invio di \signal{SIGALRM} dopo \param{seconds} secondi.
   
   \bodydesc{La funzione restituisce il numero di secondi rimanenti ad un
     precedente allarme, o zero se non c'erano allarmi pendenti.}
@@ -1099,7 +1100,7 @@ prototipo è:
 La funzione fornisce un meccanismo che consente ad un processo di predisporre
 un'interruzione nel futuro, (ad esempio per effettuare una qualche operazione
 dopo un certo periodo di tempo), programmando l'emissione di un segnale (nel
-caso in questione \const{SIGALRM}) dopo il numero di secondi specificato da
+caso in questione \signal{SIGALRM}) dopo il numero di secondi specificato da
 \param{seconds}.
 
 Se si specifica per \param{seconds} un valore nullo non verrà inviato nessun
@@ -1118,15 +1119,15 @@ processo tre diversi timer:
 \begin{itemize*}
 \item un \textit{real-time timer} che calcola il tempo reale trascorso (che
   corrisponde al \textit{clock time}). La scadenza di questo timer provoca
-  l'emissione di \const{SIGALRM};
+  l'emissione di \signal{SIGALRM};
 \item un \textit{virtual timer} che calcola il tempo di processore usato dal
   processo in user space (che corrisponde all'\textit{user time}). La scadenza
-  di questo timer provoca l'emissione di \const{SIGVTALRM};
+  di questo timer provoca l'emissione di \signal{SIGVTALRM};
 \item un \textit{profiling timer} che calcola la somma dei tempi di processore
   utilizzati direttamente dal processo in user space, e dal kernel nelle
   system call ad esso relative (che corrisponde a quello che in
   sez.~\ref{sec:sys_unix_time} abbiamo chiamato \textit{CPU time}). La scadenza
-  di questo timer provoca l'emissione di \const{SIGPROF}.
+  di questo timer provoca l'emissione di \signal{SIGPROF}.
 \end{itemize*}
 
 Il timer usato da \func{alarm} è il \textit{clock time}, e corrisponde cioè al
@@ -1188,7 +1189,7 @@ questo modo il ciclo verrà ripetuto; se invece il valore di \var{it\_interval}
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/itimerval.h}
   \end{minipage} 
   \normalsize 
@@ -1207,7 +1208,7 @@ fig.~\ref{fig:sig_alarm_def}.\footnote{questo comporta anche che non è il caso
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/alarm_def.c}
   \end{minipage} 
   \normalsize 
@@ -1266,14 +1267,14 @@ valore corrente di un timer senza modificarlo, è possibile usare la funzione
 
 L'ultima funzione che permette l'invio diretto di un segnale è \funcd{abort},
 che, come accennato in sez.~\ref{sec:proc_termination}, permette di abortire
-l'esecuzione di un programma tramite l'invio di \const{SIGABRT}. Il suo
+l'esecuzione di un programma tramite l'invio di \signal{SIGABRT}. Il suo
 prototipo è:
 \begin{prototype}{stdlib.h}{void abort(void)}
   
   Abortisce il processo corrente.
   
   \bodydesc{La funzione non ritorna, il processo è terminato inviando il
-  segnale di \const{SIGABRT}.}
+  segnale di \signal{SIGABRT}.}
 \end{prototype}
 
 La differenza fra questa funzione e l'uso di \func{raise} è che anche se il
@@ -1342,10 +1343,10 @@ termine per l'attesa, e ricalcolare tutte le volte il numero di secondi da
 aspettare.
 
 In alcune implementazioni inoltre l'uso di \func{sleep} può avere conflitti
-con quello di \const{SIGALRM}, dato che la funzione può essere realizzata con
+con quello di \signal{SIGALRM}, dato che la funzione può essere realizzata con
 l'uso di \func{pause} e \func{alarm} (in maniera analoga all'esempio che
 vedremo in sez.~\ref{sec:sig_example}). In tal caso mescolare chiamata di
-\func{alarm} e \func{sleep} o modificare l'azione di \const{SIGALRM}, può
+\func{alarm} e \func{sleep} o modificare l'azione di \signal{SIGALRM}, può
 causare risultati indefiniti. Nel caso delle \acr{glibc} è stata usata una
 implementazione completamente indipendente e questi problemi non ci sono.
 
@@ -1366,7 +1367,7 @@ seguono quella di SUSv2 che prevede il seguente prototipo:
 \end{prototype}
 
 Anche questa funzione, a seconda delle implementazioni, può presentare
-problemi nell'interazione con \func{alarm} e \const{SIGALRM}. È pertanto
+problemi nell'interazione con \func{alarm} e \signal{SIGALRM}. È pertanto
 deprecata in favore della funzione \funcd{nanosleep}, definita dallo standard
 POSIX1.b, il cui prototipo è:
 \begin{prototype}{unistd.h}{int nanosleep(const struct timespec *req, struct
@@ -1387,7 +1388,7 @@ POSIX1.b, il cui prototipo è:
 Lo standard richiede che la funzione sia implementata in maniera del tutto
 indipendente da \func{alarm}\footnote{nel caso di Linux questo è fatto
   utilizzando direttamente il timer del kernel.} e sia utilizzabile senza
-interferenze con l'uso di \const{SIGALRM}. La funzione prende come argomenti
+interferenze con l'uso di \signal{SIGALRM}. La funzione prende come argomenti
 delle strutture di tipo \struct{timespec}, la cui definizione è riportata in
 fig.~\ref{fig:sys_timespec_struct}, che permette di specificare un tempo con
 una precisione fino al nanosecondo.
@@ -1432,39 +1433,40 @@ precisione disponibile sull'hardware della propria macchina.
 \label{sec:sig_sigchld}
 
 Un semplice esempio per illustrare il funzionamento di un gestore di segnale è
-quello della gestione di \const{SIGCHLD}. Abbiamo visto in
+quello della gestione di \signal{SIGCHLD}. Abbiamo visto in
 sez.~\ref{sec:proc_termination} che una delle azioni eseguite dal kernel alla
 conclusione di un processo è quella di inviare questo segnale al
 padre.\footnote{in realtà in SVr4 eredita la semantica di System V, in cui il
-  segnale si chiama \const{SIGCLD} e viene trattato in maniera speciale; in
+  segnale si chiama \signal{SIGCLD} e viene trattato in maniera speciale; in
   System V infatti se si imposta esplicitamente l'azione a \const{SIG\_IGN} il
-  segnale non viene generato ed il sistema non genera \index{zombie} zombie
-  (lo stato di terminazione viene scartato senza dover chiamare una
-  \func{wait}).  L'azione predefinita è sempre quella di ignorare il segnale,
-  ma non attiva questo comportamento. Linux, come BSD e POSIX, non supporta
-  questa semantica ed usa il nome di \const{SIGCLD} come sinonimo di
-  \const{SIGCHLD}.} In generale dunque, quando non interessa elaborare lo
+  segnale non viene generato ed il sistema non genera \itindex{zombie}
+  \textit{zombie} (lo stato di terminazione viene scartato senza dover
+  chiamare una \func{wait}).  L'azione predefinita è sempre quella di ignorare
+  il segnale, ma non attiva questo comportamento. Linux, come BSD e POSIX, non
+  supporta questa semantica ed usa il nome di \signal{SIGCLD} come sinonimo di
+  \signal{SIGCHLD}.} In generale dunque, quando non interessa elaborare lo
 stato di uscita di un processo, si può completare la gestione della
-terminazione installando un gestore per \const{SIGCHLD} il cui unico compito
+terminazione installando un gestore per \signal{SIGCHLD} il cui unico compito
 sia quello di chiamare \func{waitpid} per completare la procedura di
-terminazione in modo da evitare la formazione di \index{zombie} zombie.
+terminazione in modo da evitare la formazione di \itindex{zombie}
+\textit{zombie}.
 
 In fig.~\ref{fig:sig_sigchld_handl} è mostrato il codice contenente una
-implementazione generica di una funzione di gestione per \const{SIGCHLD}, (che
-si trova nei sorgenti allegati nel file \file{SigHand.c}); se ripetiamo i test
-di sez.~\ref{sec:proc_termination}, invocando \cmd{forktest} con l'opzione
-\cmd{-s} (che si limita ad effettuare l'installazione di questa funzione come
-gestore di \const{SIGCHLD}) potremo verificare che non si ha più la creazione
-di \index{zombie} zombie.
-
-\begin{figure}[!htb]
+implementazione generica di una funzione di gestione per \signal{SIGCHLD},
+(che si trova nei sorgenti allegati nel file \file{SigHand.c}); se ripetiamo i
+test di sez.~\ref{sec:proc_termination}, invocando \cmd{forktest} con
+l'opzione \cmd{-s} (che si limita ad effettuare l'installazione di questa
+funzione come gestore di \signal{SIGCHLD}) potremo verificare che non si ha
+più la creazione di \itindex{zombie} \textit{zombie}.
+
+\begin{figure}[!htbp]
   \footnotesize  \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/hand_sigchild.c}
   \end{minipage}
   \normalsize 
   \caption{Codice di una funzione generica di gestione per il segnale
-    \texttt{SIGCHLD}.}
+    \signal{SIGCHLD}.}
   \label{fig:sig_sigchld_handl}
 \end{figure}
 
@@ -1486,7 +1488,7 @@ generazione di ulteriori segnali dello stesso tipo. In questo caso normalmente
 i segnali successivi vengono ``\textsl{fusi}'' col primo ed al processo ne
 viene recapitato soltanto uno.
 
-Questo può essere un caso comune proprio con \const{SIGCHLD}, qualora capiti
+Questo può essere un caso comune proprio con \signal{SIGCHLD}, qualora capiti
 che molti processi figli terminino in rapida successione. Esso inoltre si
 presenta tutte le volte che un segnale viene bloccato: per quanti siano i
 segnali emessi durante il periodo di blocco, una volta che quest'ultimo sarà
@@ -1495,7 +1497,8 @@ rimosso verrà recapitato un solo segnale.
 Allora, nel caso della terminazione dei processi figli, se si chiamasse
 \func{waitpid} una sola volta, essa leggerebbe lo stato di terminazione per un
 solo processo, anche se i processi terminati sono più di uno, e gli altri
-resterebbero in stato di \index{zombie} zombie per un tempo indefinito.
+resterebbero in stato di \itindex{zombie} \textit{zombie} per un tempo
+indefinito.
 
 Per questo occorre ripetere la chiamata di \func{waitpid} fino a che essa non
 ritorni un valore nullo, segno che non resta nessun processo di cui si debba
@@ -1531,9 +1534,9 @@ questo può sembrare di implementazione immediata; ad esempio una semplice
 versione di \func{sleep} potrebbe essere quella illustrata in
 fig.~\ref{fig:sig_sleep_wrong}.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/sleep_danger.c}
   \end{minipage}
   \normalsize 
@@ -1541,7 +1544,7 @@ fig.~\ref{fig:sig_sleep_wrong}.
   \label{fig:sig_sleep_wrong}
 \end{figure}
 
-Dato che è nostra intenzione utilizzare \const{SIGALRM} il primo passo della
+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
 \func{alarm} per specificare il tempo d'attesa per l'invio del segnale a cui
@@ -1558,7 +1561,7 @@ presenta una pericolosa \itindex{race~condition} \textit{race condition}.
 Infatti, se il processo viene interrotto fra la chiamata di \func{alarm} e
 \func{pause}, può capitare (ad esempio se il sistema è molto carico) che il
 tempo di attesa scada prima dell'esecuzione di quest'ultima, cosicché essa
-sarebbe eseguita dopo l'arrivo di \const{SIGALRM}. In questo caso ci si
+sarebbe eseguita dopo l'arrivo di \signal{SIGALRM}. In questo caso ci si
 troverebbe di fronte ad un \itindex{deadlock} deadlock, in quanto \func{pause}
 non verrebbe mai più interrotta (se non in caso di un altro segnale).
 
@@ -1568,9 +1571,9 @@ uscire dal gestore; in questo modo, con una condizione sullo stato di
 uscita di quest'ultima, si può evitare la chiamata a \func{pause}, usando un
 codice del tipo di quello riportato in fig.~\ref{fig:sig_sleep_incomplete}.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/sleep_defect.c}
   \end{minipage}
   \normalsize 
@@ -1598,14 +1601,14 @@ qualche forma di evento; in genere quello che si fa in questo caso è impostare
 nel gestore un opportuno flag da controllare nel corpo principale del
 programma (con un codice del tipo di quello riportato in
 fig.~\ref{fig:sig_event_wrong}). La logica è quella di far impostare al
-gestore (\texttt{\small 14-19}) una variabile globale preventivamente
-inizializzata nel programma principale, il quale potrà determinare,
-osservandone il contenuto, l'occorrenza o meno del segnale, e prendere le
-relative azioni conseguenti (\texttt{\small 6-11}).
+gestore (\texttt{\small 14-19}) una \index{variabili!globali} variabile
+globale preventivamente inizializzata nel programma principale, il quale potrà
+determinare, osservandone il contenuto, l'occorrenza o meno del segnale, e
+prendere le relative azioni conseguenti (\texttt{\small 6-11}).
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize\centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/sig_alarm.c}
   \end{minipage}
   \normalsize 
@@ -1720,8 +1723,8 @@ da un processo. Il suo prototipo è:
     errore, nel qual caso \var{errno} assumerà i valori:
   \begin{errlist}
   \item[\errcode{EINVAL}] si è specificato un numero di segnale invalido o si è
-    cercato di installare il gestore per \const{SIGKILL} o
-    \const{SIGSTOP}.
+    cercato di installare il gestore per \signal{SIGKILL} o
+    \signal{SIGSTOP}.
   \item[\errcode{EFAULT}] si sono specificati indirizzi non validi.
   \end{errlist}}
 \end{prototype}
@@ -1751,7 +1754,7 @@ più usato.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/sigaction.h}
   \end{minipage} 
   \normalsize 
@@ -1772,7 +1775,7 @@ dell'implementazione di \code{sleep} mostrata in
 fig.~\ref{fig:sig_sleep_incomplete}. In quel caso infatti se il segnale di
 allarme avesse interrotto un altro gestore questo non sarebbe stato eseguito
 correttamente; la cosa poteva essere prevenuta installando gli altri gestori
-usando \var{sa\_mask} per bloccare \const{SIGALRM} durante la loro esecuzione.
+usando \var{sa\_mask} per bloccare \signal{SIGALRM} durante la loro esecuzione.
 Il valore di \var{sa\_flag} permette di specificare vari aspetti del
 comportamento di \func{sigaction}, e della reazione del processo ai vari
 segnali; i valori possibili ed il relativo significato sono riportati in
@@ -1786,11 +1789,11 @@ tab.~\ref{tab:sig_sa_flag}.
     \textbf{Valore} & \textbf{Significato} \\
     \hline
     \hline
-    \const{SA\_NOCLDSTOP}& Se il segnale è \const{SIGCHLD} allora non deve
+    \const{SA\_NOCLDSTOP}& Se il segnale è \signal{SIGCHLD} allora non deve
                            essere notificato quando il processo figlio viene
-                           fermato da uno dei segnali \const{SIGSTOP},
-                           \const{SIGTSTP}, \const{SIGTTIN} o 
-                           \const{SIGTTOU}.\\
+                           fermato da uno dei segnali \signal{SIGSTOP},
+                           \signal{SIGTSTP}, \signal{SIGTTIN} o 
+                           \signal{SIGTTOU}.\\
     \const{SA\_RESETHAND}& Ristabilisce l'azione per il segnale al valore 
                            predefinito una volta che il gestore è stato
                            lanciato, riproduce cioè il comportamento della
@@ -1813,9 +1816,9 @@ tab.~\ref{tab:sig_sa_flag}.
                            gestore in forma estesa usando
                            \var{sa\_sigaction} al posto di
                            \var{sa\_handler}.\\
-    \const{SA\_NOCLDWAIT}& Se il segnale è \const{SIGCHLD} allora i processi
-                           figli non diventano \textit{zombie} quando
-                           terminano.\footnotemark \\ 
+    \const{SA\_NOCLDWAIT}& Se il segnale è \signal{SIGCHLD} allora i processi
+                           figli non diventano \itindex{zombie}
+                           \textit{zombie} quando terminano.\footnotemark \\ 
     \hline
   \end{tabular}
   \caption{Valori del campo \var{sa\_flag} della struttura \struct{sigaction}.}
@@ -1836,7 +1839,7 @@ specificare, a seconda dell'uso o meno del flag \const{SA\_SIGINFO},
 rispettivamente attraverso i campi \var{sa\_sigaction} o
 \var{sa\_handler},\footnote{i due campi devono essere usati in maniera
   alternativa, in certe implementazioni questi campi vengono addirittura
-  definiti come \ctyp{union}.}  Quest'ultima è quella classica usata anche con
+  definiti come \direct{union}.}  Quest'ultima è quella classica usata anche con
 \func{signal}, mentre la prima permette di usare un gestore più complesso, in
 grado di ricevere informazioni più dettagliate dal sistema, attraverso la
 struttura \struct{siginfo\_t}, riportata in fig.~\ref{fig:sig_siginfo_t}.
@@ -1851,7 +1854,7 @@ causato l'emissione del segnale.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/siginfo_t.h}
   \end{minipage} 
   \normalsize 
@@ -1869,11 +1872,11 @@ in questo caso sono riportati in tab.~\ref{tab:sig_si_code_generic}.
 
 Nel caso di alcuni segnali però il valore di \var{si\_code} viene usato per
 fornire una informazione specifica relativa alle motivazioni della ricezione
-dello stesso; ad esempio i vari segnali di errore (\const{SIGILL},
-\const{SIGFPE}, \const{SIGSEGV} e \const{SIGBUS}) lo usano per fornire
+dello stesso; ad esempio i vari segnali di errore (\signal{SIGILL},
+\signal{SIGFPE}, \signal{SIGSEGV} e \signal{SIGBUS}) lo usano per fornire
 maggiori dettagli riguardo l'errore, come il tipo di errore aritmetico, di
 istruzione illecita o di violazione di memoria; mentre alcuni segnali di
-controllo (\const{SIGCHLD}, \const{SIGTRAP} e \const{SIGPOLL}) forniscono
+controllo (\signal{SIGCHLD}, \signal{SIGTRAP} e \signal{SIGPOLL}) forniscono
 altre informazioni specifiche.
 
 \begin{table}[!htb]
@@ -1896,7 +1899,7 @@ altre informazioni specifiche.
     \const{SI\_ASYNCIO}& una operazione di I/O asincrono (vedi
                          sez.~\ref{sec:file_asyncronous_access}) è stata
                          completata.\\
-    \const{SI\_SIGIO}  & segnale di \const{SIGIO} da una coda (vedi
+    \const{SI\_SIGIO}  & segnale di \signal{SIGIO} da una coda (vedi
                          sez.~\ref{sec:file_asyncronous_operation}).\\ 
     \const{SI\_TKILL}  & inviato da \func{tkill} o \func{tgkill} (vedi
                          sez.~\ref{cha:threads_xxx}).\footnotemark\\ 
@@ -1973,22 +1976,22 @@ cui si sono appena citati i rispettivi segnali.\footnote{il prefisso del nome
     \hline
   \end{tabular}
   \caption{Valori del campo \var{si\_code} della struttura \struct{sigaction}
-    impostati rispettivamente dai segnali \const{SIGILL}, \const{SIGFPE},
-    \const{SIGSEGV}, \const{SIGBUS}, \const{SIGCHLD}, \const{SIGTRAP} e
-    \const{SIGPOLL}/\const{SIGIO}.}
+    impostati rispettivamente dai segnali \signal{SIGILL}, \signal{SIGFPE},
+    \signal{SIGSEGV}, \signal{SIGBUS}, \signal{SIGCHLD}, \signal{SIGTRAP} e
+    \signal{SIGPOLL}/\signal{SIGIO}.}
   \label{tab:sig_si_code_special}
 \end{table}
 
-Il resto della struttura \struct{siginfo\_t} è definito come \ctyp{union} ed i
-valori eventualmente presenti dipendono dal segnale, così \const{SIGCHLD} ed i
+Il resto della struttura \struct{siginfo\_t} è definito come \direct{union} ed i
+valori eventualmente presenti dipendono dal segnale, così \signal{SIGCHLD} ed i
 segnali \textit{real-time} (vedi sez.~\ref{sec:sig_real_time}) inviati tramite
 \func{kill} avvalorano \var{si\_pid} e \var{si\_uid} coi valori corrispondenti
-al processo che ha emesso il segnale, \const{SIGCHLD} avvalora anche i campi
+al processo che ha emesso il segnale, \signal{SIGCHLD} avvalora anche i campi
 \var{si\_status}, \var{si\_utime} e \var{si\_stime} che indicano
 rispettivamente lo stato di uscita, l'\textit{user time} e il \textit{system
   time} (vedi sez.~\ref{sec:sys_cpu_times}) usati dal processo;
-\const{SIGILL}, \const{SIGFPE}, \const{SIGSEGV} e \const{SIGBUS} avvalorano
-\var{si\_addr} con l'indirizzo in cui è avvenuto l'errore, \const{SIGIO} (vedi
+\signal{SIGILL}, \signal{SIGFPE}, \signal{SIGSEGV} e \signal{SIGBUS} avvalorano
+\var{si\_addr} con l'indirizzo in cui è avvenuto l'errore, \signal{SIGIO} (vedi
 sez.~\ref{sec:file_asyncronous_io}) avvalora \var{si\_fd} con il numero del
 file descriptor e \var{si\_band} per i \itindex{out-of-band} dati urgenti
 (vedi sez.~\ref{sec:TCP_urgent_data}) su un socket, il segnale inviato alla
@@ -2012,9 +2015,9 @@ che in certi sistemi questi possono essere diversi. In definitiva dunque, a
 meno che non si sia vincolati all'aderenza stretta allo standard ISO C, è
 sempre il caso di evitare l'uso di \func{signal} a favore di \func{sigaction}.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize  \centering
-  \begin{minipage}[c]{15.6cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/Signal.c}
   \end{minipage} 
   \normalsize 
@@ -2155,16 +2158,16 @@ sospensione del processo lo standard POSIX ha previsto la funzione
 Come esempio dell'uso di queste funzioni proviamo a riscrivere un'altra volta
 l'esempio di implementazione di \code{sleep}. Abbiamo accennato in
 sez.~\ref{sec:sig_sigaction} come con \func{sigaction} sia possibile bloccare
-\const{SIGALRM} nell'installazione dei gestori degli altri segnali, per poter
+\signal{SIGALRM} nell'installazione dei gestori degli altri segnali, per poter
 usare l'implementazione vista in fig.~\ref{fig:sig_sleep_incomplete} senza
 interferenze.  Questo però comporta una precauzione ulteriore al semplice uso
 della funzione, vediamo allora come usando la nuova interfaccia è possibile
 ottenere un'implementazione, riportata in fig.~\ref{fig:sig_sleep_ok} che non
 presenta neanche questa necessità.
 
-\begin{figure}[!htb]
-  \footnotesize   \centering
-  \begin{minipage}[c]{15.6cm}
+\begin{figure}[!htbp]
+  \footnotesize \centering
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/sleep.c}
   \end{minipage} 
   \normalsize 
@@ -2179,18 +2182,18 @@ 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
-l'opportuno gestore per \const{SIGALRM}, salvando quello originario, che
+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 \const{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
 fine (\texttt{\small 22}), e al contempo si prepara la maschera dei segnali
-\var{sleep\_mask} per riattivare \const{SIGALRM} all'esecuzione di
+\var{sleep\_mask} per riattivare \signal{SIGALRM} all'esecuzione di
 \func{sigsuspend}.  
 
 In questo modo non sono più possibili \itindex{race~condition} \textit{race
-  condition} dato che \const{SIGALRM} viene disabilitato con
+  condition} dato che \signal{SIGALRM} viene disabilitato con
 \func{sigprocmask} fino alla chiamata di \func{sigsuspend}.  Questo metodo è
 assolutamente generale e può essere applicato a qualunque altra situazione in
 cui si deve attendere per un segnale, i passi sono sempre i seguenti:
@@ -2260,7 +2263,7 @@ lista riportata in fig.~\ref{fig:sig_safe_functions}.
     \func{getsockname}, \func{getsockopt}, \func{getuid}, \func{kill},
     \func{link}, \func{listen}, \func{lseek}, \func{lstat}, \func{mkdir},
     \func{mkfifo}, \func{open}, \func{pathconf}, \func{pause}, \func{pipe},
-    \func{poll}, \func{posix\_trace\_event}, \func{pselect}, \func{raise},
+    \func{poll}, \funcm{posix\_trace\_event}, \func{pselect}, \func{raise},
     \func{read}, \func{readlink}, \func{recv}, \func{recvfrom},
     \func{recvmsg}, \func{rename}, \func{rmdir}, \func{select},
     \func{sem\_post}, \func{send}, \func{sendmsg}, \func{sendto},
@@ -2268,7 +2271,7 @@ lista riportata in fig.~\ref{fig:sig_safe_functions}.
     \func{setuid}, \func{shutdown}, \func{sigaction}, \func{sigaddset},
     \func{sigdelset}, \func{sigemptyset}, \func{sigfillset},
     \func{sigismember}, \func{signal}, \func{sigpause}, \func{sigpending},
-    \func{sigprocmask}, \func{sigqueue}, \func{sigset}, \func{sigsuspend},
+    \func{sigprocmask}, \func{sigqueue}, \funcm{sigset}, \func{sigsuspend},
     \func{sleep}, \func{socket}, \func{socketpair}, \func{stat},
     \func{symlink}, \func{sysconf}, \func{tcdrain}, \func{tcflow},
     \func{tcflush}, \func{tcgetattr}, \func{tcgetgrp}, \func{tcsendbreak},
@@ -2309,10 +2312,11 @@ ulteriori funzioni in fig.~\ref{fig:sig_safe_functions_posix_2008}.
 Per questo motivo è opportuno mantenere al minimo indispensabile le operazioni
 effettuate all'interno di un gestore di segnali, qualora si debbano compiere
 operazioni complesse è sempre preferibile utilizzare la tecnica in cui si usa
-il gestore per impostare il valore di una qualche variabile globale, e poi si
-eseguono le operazioni complesse nel programma verificando (con tutti gli
-accorgimenti visti in precedenza) il valore di questa variabile tutte le volte
-che si è rilevata una interruzione dovuta ad un segnale.
+il gestore per impostare il valore di una qualche \index{variabili!globali}
+variabile globale, e poi si eseguono le operazioni complesse nel programma
+verificando (con tutti gli accorgimenti visti in precedenza) il valore di
+questa variabile tutte le volte che si è rilevata una interruzione dovuta ad
+un segnale.
 
 
 \section{Funzionalità avanzate}
@@ -2419,12 +2423,12 @@ fig.~\ref{fig:sig_siginfo_t}, nella trattazione dei gestori in forma estesa.
 
 In particolare i campi utilizzati dai segnali \textit{real-time} sono
 \var{si\_pid} e \var{si\_uid} in cui vengono memorizzati rispettivamente il
-\acr{pid} e l'user-ID effettivo del processo che ha inviato il segnale, mentre
+\ids{PID} e l'\ids{UID} effettivo del processo che ha inviato il segnale, mentre
 per la restituzione dei dati viene usato il campo \var{si\_value}.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/sigval_t.h}
   \end{minipage} 
   \normalsize 
@@ -2433,11 +2437,11 @@ per la restituzione dei dati viene usato il campo \var{si\_value}.
   \label{fig:sig_sigval}
 \end{figure}
 
-Questo è una \ctyp{union} di tipo \struct{sigval} (la sua definizione è in
+Questo è una \direct{union} di tipo \struct{sigval} (la sua definizione è in
 fig.~\ref{fig:sig_sigval}) in cui può essere memorizzato o un valore numerico,
 se usata nella forma \var{sival\_int}, o un indirizzo, se usata nella forma
 \var{sival\_ptr}. L'unione viene usata dai segnali \textit{real-time} e da
-vari meccanismi di notifica\footnote{un campo di tipo \struct{sigval\_t} è
+vari meccanismi di notifica\footnote{un campo di tipo \type{sigval\_t} è
   presente anche nella struttura \struct{sigevent} (definita in
   fig.~\ref{fig:struct_sigevent}) che viene usata dai meccanismi di notifica
   come quelli per i timer POSIX (vedi sez.~\ref{sec:sig_timer_adv}), l'I/O
@@ -2492,7 +2496,7 @@ Secondo lo standard POSIX la profondità della coda è indicata dalla costante
 \const{\_POSIX\_SIGQUEUE\_MAX}, è pari a 32. Nel caso di Linux la coda ha una
 dimensione variabile; fino alla versione 2.6.7 c'era un limite massimo globale
 che poteva essere impostato come parametro del kernel in
-\procfile{/proc/sys/kernel/rtsig-max};\footnote{ed il valore predefinito era
+\sysctlfile{kernel/rtsig-max};\footnote{ed il valore predefinito era
   pari a 1024.} a partire dal kernel 2.6.8 il valore globale è stato rimosso e
 sostituito dalla risorsa \const{RLIMIT\_SIGPENDING} associata al singolo
 utente, che può essere modificata con \func{setrlimit} come illustrato in
@@ -2694,21 +2698,26 @@ tab.~\ref{tab:sig_timer_clockid_types}.
 \footnotetext{specifico di Linux, introdotto a partire dal kernel 2.6.28, non
   previsto da POSIX e non presente in altri sistemi unix-like.}
 
-% TODO, dal 2.6.39 anche CLOCK_BOOTTIME, vedi http://lwn.net/Articles/432757/
+% TODO: aggiungere le estensioni introdotte con il 2.6.38, verificandone il
+% funzionamento, vedi http://lwn.net/Articles/429595/
+% TODO: dal 2.6.39 anche CLOCK_BOOTTIME_ALARM e CLOCK_BOOTTIME, vedi
+% http://lwn.net/Articles/429925/
+% TODP: dal 3.0 anche i cosiddetti Posix Alarm Timers, con
+% CLOCK_REALTIME_ALARM vedi http://lwn.net/Articles/429925/
 
 Per poter utilizzare queste funzionalità le \acr{glibc} richiedono che la
 macro \macro{\_POSIX\_C\_SOURCE} sia definita ad un valore maggiore o uguale
 di \texttt{199309L} (vedi sez.~\ref{sec:intro_gcc_glibc_std}), inoltre i
-programmi che le usano devono essere collegati con la libreria delle estensioni
-\textit{real-time} usando esplicitamente l'opzione \texttt{-lrt}. Si tenga
-presente inoltre che la disponibilità di queste funzionalità avanzate può
-essere controllato dalla definizione della macro \macro{\_POSIX\_TIMERS} ad un
-valore maggiore di 0, e che le ulteriori macro
+programmi che le usano devono essere collegati con la libreria delle
+estensioni \textit{real-time} usando esplicitamente l'opzione
+\texttt{-lrt}. Si tenga presente inoltre che la disponibilità di queste
+funzionalità avanzate può essere controllato dalla definizione della macro
+\macro{\_POSIX\_TIMERS} ad un valore maggiore di 0, e che le ulteriori macro
 \macro{\_POSIX\_MONOTONIC\_CLOCK}, \macro{\_POSIX\_CPUTIME} e
 \macro{\_POSIX\_THREAD\_CPUTIME} indicano la presenza dei rispettivi orologi
 di tipo \const{CLOCK\_MONOTONIC}, \const{CLOCK\_PROCESS\_CPUTIME\_ID} e
 \const{CLOCK\_PROCESS\_CPUTIME\_ID}.\footnote{tutte queste macro sono definite
-  in \texttt{unistd.h}, che pertanto deve essere incluso per poterle
+  in \headfile{unistd.h}, che pertanto deve essere incluso per poterle
   controllarle.} Infine se il kernel ha il supporto per gli \textit{high
   resolution timer} un elenco degli orologi e dei timer può essere ottenuto
 tramite il file \procfile{/proc/timer\_list}.
@@ -2872,8 +2881,8 @@ l'orologio associato ad un \textit{thread} invece che a un processo, è
 }
 \end{functions}
 
-
 % TODO, dal 2.6.39 aggiunta clock_adjtime 
+% TODO manca clock_nanosleep
 
 Con l'introduzione degli orologi ad alta risoluzione è divenuto possibile
 ottenere anche una gestione più avanzata degli allarmi; abbiamo già visto in
@@ -2929,7 +2938,7 @@ meccanismo di notifica.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/sigevent.h}
   \end{minipage} 
   \normalsize 
@@ -2938,14 +2947,14 @@ meccanismo di notifica.
   \label{fig:struct_sigevent}
 \end{figure}
 
-La struttura \struct{sigevent} (accessibile includendo \texttt{time.h}) è
+La struttura \struct{sigevent} (accessibile includendo \headfile{time.h}) è
 riportata in fig.~\ref{fig:struct_sigevent};\footnote{la definizione effettiva
   dipende dall'implementazione, quella mostrata è la versione descritta nella
-  pagina di manuale di \func{timer\_create}.} il campo \var{sigev\_notify} è il
-più importante essendo quello che indica le modalità della notifica, gli altri
-dipendono dal valore che si è specificato per \var{sigev\_notify}, si sono
-riportati in tab.~\ref{tab:sigevent_sigev_notify}. La scelta del meccanismo di
-notifica viene fatta impostando uno dei valori di
+  pagina di manuale di \func{timer\_create}.} il campo \var{sigev\_notify} è
+il più importante essendo quello che indica le modalità della notifica, gli
+altri dipendono dal valore che si è specificato per \var{sigev\_notify}, si
+sono riportati in tab.~\ref{tab:sigevent_sigev_notify}. La scelta del
+meccanismo di notifica viene fatta impostando uno dei valori di
 tab.~\ref{tab:sigevent_sigev_notify} per \var{sigev\_notify}, e fornendo gli
 eventuali ulteriori argomenti necessari a secondo della scelta
 effettuata. Diventa così possibile indicare l'uso di un segnale o l'esecuzione
@@ -2967,7 +2976,7 @@ effettuata. Diventa così possibile indicare l'uso di un segnale o l'esecuzione
                              segnale è stato installato con
                              \const{SA\_SIGINFO} gli verrà restituito il
                              valore specificato con \var{sigev\_value} (una
-                             \ctyp{union} \texttt{sigval}, la cui definizione
+                             \direct{union} \texttt{sigval}, la cui definizione
                              è in fig.~\ref{fig:sig_sigval}) come valore del
                              campo \var{si\_value} di \struct{siginfo\_t}.\\
     \const{SIGEV\_THREAD}  & La notifica viene effettuata creando un nuovo
@@ -3003,9 +3012,9 @@ Nel caso di \func{timer\_create} occorrerà passare alla funzione come secondo
 argomento l'indirizzo di una di queste strutture per indicare le modalità con
 cui si vuole essere notificati della scadenza del timer, se non si specifica
 nulla (passando un valore \val{NULL}) verrà inviato il segnale
-\const{SIGALRM} al processo corrente, o per essere più precisi verrà
+\signal{SIGALRM} al processo corrente, o per essere più precisi verrà
 utilizzato un valore equivalente all'aver specificato \const{SIGEV\_SIGNAL}
-per \var{sigev\_notify}, \const{SIGALRM} per \var{sigev\_signo} e
+per \var{sigev\_notify}, \signal{SIGALRM} per \var{sigev\_signo} e
 l'identificatore del timer come valore per \var{sigev\_value.sival\_int}.
 
 Il terzo argomento deve essere l'indirizzo di una variabile di tipo
@@ -3059,7 +3068,7 @@ state allocate.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/itimerspec.h}
   \end{minipage} 
   \normalsize 
@@ -3253,7 +3262,7 @@ procedura:
 \end{enumerate*}
 
 In genere il primo passo viene effettuato allocando un'opportuna area di
-memoria con \code{malloc}; in \file{signal.h} sono definite due costanti,
+memoria con \code{malloc}; in \headfile{signal.h} sono definite due costanti,
 \const{SIGSTKSZ} e \const{MINSIGSTKSZ}, che possono essere utilizzate per
 allocare una quantità di spazio opportuna, in modo da evitare overflow. La
 prima delle due è la dimensione canonica per uno \itindex{stack}
@@ -3296,7 +3305,7 @@ restituito dalla funzione per un successivo ripristino).
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/stack_t.h}
   \end{minipage} 
   \normalsize 
@@ -3324,7 +3333,7 @@ segnali quando si teme di avere problemi di esaurimento dello \textit{stack}
 standard o di superamento di un limite (vedi
 sez.~\ref{sec:sys_resource_limit}) imposto con chiamate del tipo
 \code{setrlimit(RLIMIT\_STACK, \&rlim)}.  In tal caso infatti si avrebbe un
-segnale di \const{SIGSEGV}, che potrebbe essere gestito soltanto avendo
+segnale di \signal{SIGSEGV}, che potrebbe essere gestito soltanto avendo
 abilitato uno \itindex{stack} \textit{stack} alternativo.
 
 Si tenga presente che le funzioni chiamate durante l'esecuzione sullo
@@ -3383,6 +3392,10 @@ parte l'uso di \type{sigjmp\_buf} per \param{env}, è assolutamente identica a
 \func{longjmp}.
 
 
+% TODO: se e quando si troverà un argomento adeguato inserire altre funzioni
+% sparse attinenti ai segnali, al momento sono note solo:
+% * sigreturn (funzione interna, scarsamente interessante)
+% argomento a priorità IDLE (fare quando non resta niente altro da trattare)
 
 
 % LocalWords:  kernel POSIX timer shell control ctrl kill raise signal handler