X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=signal.tex;h=d05c4cac2102ec4eb3e2f99fbc54919957996449;hp=3c794a665bf623627a684907ad99f856a2d2551b;hb=7f3cd637082c70095a9f4f8873e4ec6400b670c0;hpb=51ac65a077651bde52ce68d43aa61b158f5dbd3d diff --git a/signal.tex b/signal.tex index 3c794a6..d05c4ca 100644 --- a/signal.tex +++ b/signal.tex @@ -1,6 +1,6 @@ %% signal.tex %% -%% Copyright (C) 2000-2015 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2017 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", @@ -2824,7 +2824,7 @@ Secondo lo standard POSIX la profondità della coda è indicata dalla costante \constd{SIGQUEUE\_MAX}, una della tante costanti di sistema definite dallo standard POSIX che non abbiamo riportato esplicitamente in sez.~\ref{sec:sys_limits}. Il suo valore minimo secondo lo standard, -\constd{\_POSIX\_SIGQUEUE\_MAX}, è pari a 32. Nel caso di Linux la coda ha una +\macrod{\_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 \sysctlfiled{kernel/rtsig-max} ed il valore predefinito era pari a 1024. A @@ -2911,8 +2911,6 @@ ci sono segnali pendenti la funzione ritornerà immediatamente, in questo modo si può eliminare un segnale dalla coda senza dover essere bloccati qualora esso non sia presente. -\itindbeg{thread} - L'uso di queste funzioni è principalmente associato alla gestione dei segnali con i \textit{thread}. In genere esse vengono chiamate dal \textit{thread} incaricato della gestione, che al ritorno della funzione esegue il codice che @@ -2924,8 +2922,6 @@ che venga eseguita l'azione predefinita, devono essere mascherati per tutti i \textit{thread}, compreso quello dedicato alla gestione, che potrebbe riceverlo fra due chiamate successive. -\itindend{thread} - \subsection{La gestione avanzata delle temporizzazioni} \label{sec:sig_timer_adv} @@ -3559,7 +3555,7 @@ singolo (in gergo \textit{one shot}). Infine, quando un timer non viene più utilizzato, lo si può cancellare, rimuovendolo dal sistema e recuperando le relative risorse, effettuando in -sostanza l'operazione inversa rispetto a \funcd{timer\_create}. Per questo +sostanza l'operazione inversa rispetto a \func{timer\_create}. Per questo compito lo standard prevede una apposita funzione di sistema, \funcd{timer\_delete}, il cui prototipo è: @@ -3668,8 +3664,6 @@ dato che essa può solo assicurare che un segnale è stato inviato, dato che escluderne l'avvenuto invio al momento della chiamata non significa nulla rispetto a quanto potrebbe essere in un qualunque momento successivo. -\itindbeg{stack} - Una delle caratteristiche di BSD, disponibile anche in Linux, è la possibilità di usare uno \textit{stack} alternativo per i segnali; è cioè possibile fare usare al sistema un altro \textit{stack} (invece di quello relativo al @@ -3770,8 +3764,6 @@ si accresce automaticamente (ed infatti eccederne le dimensioni può portare a conseguenze imprevedibili). Si ricordi infine che una chiamata ad una funzione della famiglia \func{exec} cancella ogni \textit{stack} alternativo. -\itindend{stack} - Abbiamo visto in fig.~\ref{fig:sig_sleep_incomplete} come si possa usare \func{longjmp} per uscire da un gestore rientrando direttamente nel corpo del programma, sappiamo però che nell'esecuzione di un gestore il segnale