Completata revisione capitolo 6.
[gapil.git] / signal.tex
index ef80f9532b5630d8bb1ddc553e42c95a06eb0ca3..cba15bcdcb599da87c3cb2594e7cf63bbd561d2c 100644 (file)
@@ -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,
 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
 
 Il numero totale di segnali presenti è dato dalla macro \const{NSIG}, e dato
 che i numeri dei segnali sono allocati progressivamente, essa corrisponde
@@ -447,7 +447,7 @@ programma al momento della terminazione.  Questi segnali sono:
   segnale può condurre ad un ciclo infinito.
 
 %   Per questo segnale le cose sono complicate dal fatto che possono esserci
   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 
 %   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 
@@ -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
 
 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,
 \includecodesnip{listati/siglist.c}
 
 L'array \var{sys\_siglist} contiene i puntatori alle stringhe di descrizione,
@@ -938,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
 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
   ridefinita per seguire la semantica affidabile usata da BSD.}
 
 Al contrario BSD segue la semantica affidabile, non disinstallando il gestore
@@ -946,7 +946,7 @@ 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
 \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
 \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
@@ -1202,7 +1202,7 @@ L'uso di \func{setitimer} consente dunque un controllo completo di tutte le
 caratteristiche dei timer, ed in effetti la stessa \func{alarm}, benché
 definita direttamente nello standard POSIX.1, può a sua volta essere espressa
 in termini di \func{setitimer}, come evidenziato dal manuale delle \acr{glibc}
 caratteristiche dei timer, ed in effetti la stessa \func{alarm}, benché
 definita direttamente nello standard POSIX.1, può a sua volta essere espressa
 in termini di \func{setitimer}, come evidenziato dal manuale delle \acr{glibc}
-\cite{glibc} che ne riporta la definizione mostrata in
+\cite{GlibcMan} che ne riporta la definizione mostrata in
 fig.~\ref{fig:sig_alarm_def}.\footnote{questo comporta anche che non è il caso
   di mescolare chiamate ad \func{abort} e a \func{setitimer}.}
 
 fig.~\ref{fig:sig_alarm_def}.\footnote{questo comporta anche che non è il caso
   di mescolare chiamate ad \func{abort} e a \func{setitimer}.}
 
@@ -1221,7 +1221,7 @@ queste funzioni era limitata dalla frequenza del timer di sistema,\footnote{il
   valore della costante \texttt{HZ}, di cui abbiamo già parlato in
   sez.~\ref{sec:proc_hierarchy}.} in quanto le temporizzazioni erano calcolate
 in numero di interruzioni del timer (i cosiddetti \itindex{jiffies}
   valore della costante \texttt{HZ}, di cui abbiamo già parlato in
   sez.~\ref{sec:proc_hierarchy}.} in quanto le temporizzazioni erano calcolate
 in numero di interruzioni del timer (i cosiddetti \itindex{jiffies}
-''\textit{jiffies}''), ed era assicurato soltanto che il segnale non sarebbe
+``\textit{jiffies}''), ed era assicurato soltanto che il segnale non sarebbe
 stato mai generato prima della scadenza programmata (l'arrotondamento cioè era
 effettuato per eccesso).\footnote{questo in realtà non è del tutto vero a
   causa di un bug, presente fino al kernel 2.6.12, che in certe circostanze
 stato mai generato prima della scadenza programmata (l'arrotondamento cioè era
 effettuato per eccesso).\footnote{questo in realtà non è del tutto vero a
   causa di un bug, presente fino al kernel 2.6.12, che in certe circostanze
@@ -1897,7 +1897,7 @@ altre informazioni specifiche.
                          messaggi POSIX (vedi
                          sez.~\ref{sec:ipc_posix_mq}).\footnotemark\\ 
     \const{SI\_ASYNCIO}& una operazione di I/O asincrono (vedi
                          messaggi POSIX (vedi
                          sez.~\ref{sec:ipc_posix_mq}).\footnotemark\\ 
     \const{SI\_ASYNCIO}& una operazione di I/O asincrono (vedi
-                         sez.~\ref{sec:file_asyncronous_access}) è stata
+                         sez.~\ref{sec:file_asyncronous_io}) è stata
                          completata.\\
     \const{SI\_SIGIO}  & segnale di \signal{SIGIO} da una coda (vedi
                          sez.~\ref{sec:file_asyncronous_operation}).\\ 
                          completata.\\
     \const{SI\_SIGIO}  & segnale di \signal{SIGIO} da una coda (vedi
                          sez.~\ref{sec:file_asyncronous_operation}).\\ 
@@ -2263,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{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},
     \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},
@@ -2271,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{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},
     \func{sleep}, \func{socket}, \func{socketpair}, \func{stat},
     \func{symlink}, \func{sysconf}, \func{tcdrain}, \func{tcflow},
     \func{tcflush}, \func{tcgetattr}, \func{tcgetgrp}, \func{tcsendbreak},
@@ -2441,7 +2441,7 @@ 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
 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
   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
@@ -2607,7 +2607,7 @@ massima dei tempi dell'orologio interno del kernel, che era quella ottenibile
 dal timer di sistema che governa lo \textit{scheduler},\footnote{e quindi
   limitate dalla frequenza dello stesso che si ricordi, come già illustrato in
   sez.~\ref{sec:proc_hierarchy}, è data dal valore della costante
 dal timer di sistema che governa lo \textit{scheduler},\footnote{e quindi
   limitate dalla frequenza dello stesso che si ricordi, come già illustrato in
   sez.~\ref{sec:proc_hierarchy}, è data dal valore della costante
-  \texttt{HZ}.} i contatori usati per il calcolo dei tempo infatti erano
+  \texttt{HZ}.} i contatori usati per il calcolo dei tempi infatti erano
 basati sul numero di \itindex{jiffies} \textit{jiffies} che vengono
 incrementati ad ogni \textit{clock tick} del timer di sistema.\footnote{il che
   comportava anche, come accennato in sez.~\ref{sec:sig_alarm_abort} per
 basati sul numero di \itindex{jiffies} \textit{jiffies} che vengono
 incrementati ad ogni \textit{clock tick} del timer di sistema.\footnote{il che
   comportava anche, come accennato in sez.~\ref{sec:sig_alarm_abort} per
@@ -2630,11 +2630,11 @@ tempo da esse dedicato all'esecuzione di un processo.
 
 Per usare queste funzionalità ed ottenere risoluzioni temporali più accurate,
 occorre però un opportuno supporto da parte del kernel, ed i cosiddetti
 
 Per usare queste funzionalità ed ottenere risoluzioni temporali più accurate,
 occorre però un opportuno supporto da parte del kernel, ed i cosiddetti
-\textit{high resolution timer} che consentono di fare ciò sono stati
-introdotti nel kernel ufficiale solo a partire dalla versione
-2.6.21.\footnote{deve essere stata abilitata l'opzione di compilazione
-  \texttt{CONFIG\_HIGH\_RES\_TIMERS}, erano però disponibili anche in
-  precedenza come patch facenti parte dello sviluppo delle estensioni
+\itindex{high~resolution~timer} \textit{high resolution timer} che consentono
+di fare ciò sono stati introdotti nel kernel ufficiale solo a partire dalla
+versione 2.6.21.\footnote{deve essere stata abilitata l'opzione di
+  compilazione \texttt{CONFIG\_HIGH\_RES\_TIMERS}, erano però disponibili
+  anche in precedenza come patch facenti parte dello sviluppo delle estensioni
   \textit{real-time} del kernel, per cui alcune distribuzioni possono avere
   questo supporto anche con versioni precedenti del kernel.} Le funzioni
 definite dallo standard POSIX per gestire orologi ad alta definizione però
   \textit{real-time} del kernel, per cui alcune distribuzioni possono avere
   questo supporto anche con versioni precedenti del kernel.} Le funzioni
 definite dallo standard POSIX per gestire orologi ad alta definizione però
@@ -2708,16 +2708,16 @@ tab.~\ref{tab:sig_timer_clockid_types}.
 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
 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
 \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}.
   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}.
@@ -2881,8 +2881,8 @@ l'orologio associato ad un \textit{thread} invece che a un processo, è
 }
 \end{functions}
 
 }
 \end{functions}
 
-
 % TODO, dal 2.6.39 aggiunta clock_adjtime 
 % 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
 
 Con l'introduzione degli orologi ad alta risoluzione è divenuto possibile
 ottenere anche una gestione più avanzata degli allarmi; abbiamo già visto in
@@ -2947,14 +2947,14 @@ meccanismo di notifica.
   \label{fig:struct_sigevent}
 \end{figure}
 
   \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
 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
 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
@@ -3082,28 +3082,28 @@ con una precisione fino al nanosecondo tramite una struttura \struct{timespec}
 (la cui definizione è riportata fig.~\ref{fig:sys_timespec_struct}). Il campo
 \var{it\_value} indica la prima scadenza dell'allarme. Di default, quando il
 valore di \param{flags} è nullo, questo valore viene considerato come un
 (la cui definizione è riportata fig.~\ref{fig:sys_timespec_struct}). Il campo
 \var{it\_value} indica la prima scadenza dell'allarme. Di default, quando il
 valore di \param{flags} è nullo, questo valore viene considerato come un
-intervallo relativo al tempo corrente,\footnote{il primo allarme scatterà cioè
-  dopo il numero di secondi e nanosecondi indicati da questo campo.} se invece
-si usa per \param{flags} il valore \const{TIMER\_ABSTIME},\footnote{al momento
-  questo è l'unico valore valido per \param{flags}.} \var{it\_value} viene
-considerato come un valore assoluto rispetto al valore usato dall'orologio a
-cui è associato il timer.\footnote{quindi a seconda dei casi lo si potrà
-  indicare o come un tempo assoluto, quando si opera rispetto all'orologio di
-  sistema (nel qual caso il valore deve essere in secondi e nanosecondi dalla
-  \textit{epoch}) o come numero di secondi o nanosecondi rispetto alla
-  partenza di un orologio di CPU, quando si opera su uno di questi.}  Infine
-un valore nullo di \var{it\_value}\footnote{per nullo si intende con valori
-  nulli per entrambi i i campi \var{tv\_sec} e \var{tv\_nsec}.} può essere
-utilizzato, indipendentemente dal tipo di orologio utilizzato, per disarmare
-l'allarme.
+intervallo relativo al tempo corrente, il primo allarme scatterà cioè dopo il
+numero di secondi e nanosecondi indicati da questo campo. Se invece si usa
+per \param{flags} il valore \const{TIMER\_ABSTIME}, che al momento è l'unico
+valore valido per \param{flags}, allora \var{it\_value} viene considerato come
+un valore assoluto rispetto al valore usato dall'orologio a cui è associato il
+timer.\footnote{quindi a seconda dei casi lo si potrà indicare o come un tempo
+  assoluto, quando si opera rispetto all'orologio di sistema (nel qual caso il
+  valore deve essere in secondi e nanosecondi dalla \textit{epoch}) o come
+  numero di secondi o nanosecondi rispetto alla partenza di un orologio di
+  CPU, quando si opera su uno di questi.}  Infine un valore nullo di
+\var{it\_value}, dover per nullo si intende con valori nulli per entrambi i
+campi \var{tv\_sec} e \var{tv\_nsec}, può essere utilizzato, indipendentemente
+dal tipo di orologio utilizzato, per disarmare l'allarme.
 
 Il campo \var{it\_interval} di \struct{itimerspec} viene invece utilizzato per
 
 Il campo \var{it\_interval} di \struct{itimerspec} viene invece utilizzato per
-impostare un allarme periodico.  Se il suo valore è nullo (se cioè sono nulli
-tutti e due i valori di detta struttura \struct{timespec}) l'allarme scatterà
-una sola volta secondo quando indicato con \var{it\_value}, altrimenti il
-valore specificato verrà preso come l'estensione del periodo di ripetizione
-della generazione dell'allarme, che proseguirà indefinitamente fintanto che
-non si disarmi il timer.
+impostare un allarme periodico.  Se il suo valore è nullo, se cioè sono nulli
+tutti e due i due campi \var{tv\_sec} e \var{tv\_nsec} di detta struttura
+\struct{timespec}, l'allarme scatterà una sola volta secondo quando indicato
+con \var{it\_value}, altrimenti il valore specificato nella struttura verrà
+preso come l'estensione del periodo di ripetizione della generazione
+dell'allarme, che proseguirà indefinitamente fintanto che non si disarmi il
+timer.
 
 Se il timer era già stato armato la funzione sovrascrive la precedente
 impostazione, se invece si indica come prima scadenza un tempo già passato,
 
 Se il timer era già stato armato la funzione sovrascrive la precedente
 impostazione, se invece si indica come prima scadenza un tempo già passato,
@@ -3262,7 +3262,7 @@ procedura:
 \end{enumerate*}
 
 In genere il primo passo viene effettuato allocando un'opportuna area di
 \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}
 \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}