X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=signal.tex;h=307b0d32697de294b3391db2f99d23229ce1bfe9;hp=3c794a665bf623627a684907ad99f856a2d2551b;hb=b0a24b5ec13267af5bcc1807c1f9aee892b3f788;hpb=51ac65a077651bde52ce68d43aa61b158f5dbd3d diff --git a/signal.tex b/signal.tex index 3c794a6..307b0d3 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-2018 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} @@ -3047,6 +3043,10 @@ tab.~\ref{tab:sig_timer_clockid_types}. \end{table} +% TODO: dal 4.17 CLOCK_MONOTONIC e CLOCK_BOOTTIME sono identici vedi +% https://lwn.net/Articles/751651/ e +% https://git.kernel.org/linus/d6ed449afdb38f89a7b38ec50e367559e1b8f71f + % NOTE: dal 3.0 anche i cosiddetti Posix Alarm Timers, con % CLOCK_REALTIME_ALARM vedi http://lwn.net/Articles/429925/ % TODO: dal 3.10 anche CLOCK_TAI @@ -3559,7 +3559,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 +3668,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 +3768,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