From 43c474f04cbbd7dd67b226af8836ae9b227f3dd5 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Sat, 10 Jul 2010 15:54:30 +0000 Subject: [PATCH] Aggiunta timer_getoverrun --- signal.tex | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/signal.tex b/signal.tex index 8e2137a..6f93285 100644 --- a/signal.tex +++ b/signal.tex @@ -3165,7 +3165,6 @@ utilizzato un valore equivalente all'aver specificato \const{SIGEV\_SIGNAL} per \var{sigev\_notify}, \const{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 \type{timer\_t} dove sarà scritto l'identificativo associato al timer appena creato, da usare in tutte le successive funzioni di gestione. Una volta creato @@ -3195,8 +3194,7 @@ identificatore, si pu Arma o disarma il timer POSIX. - \bodydesc{La funzione restituisce 0 in caso di successo e $-1$ - in caso di errore, nel qual caso \var{errno} assumerà + \bodydesc{La funzione restituisce 0 in caso di successo e $-1$ in caso di errore, nel qual caso \var{errno} assumerà uno dei seguenti valori: \begin{errlist} \item[\errcode{EINVAL}] all'interno di \param{new\_value.value} si è @@ -3255,7 +3253,37 @@ contatore dei superamenti. Questo contatore serve a fornire una indicazione al programma che riceve l'allarme su un eventuale numero di scadenze che sono passate prima della ricezione della notifica dell'allarme. - +É infatti possibile, qualunque sia il meccanismo di notifica scelto, che +quest'ultima venga ricevuta dopo che il timer è scaduto più di una +volta.\footnote{specialmente se si imposta un timer con una ripetizione a + frequenza elevata.} Nel caso dell'uso di un segnale infatti il sistema mette +in coda un solo segnale per timer,\footnote{questo indipendentemente che si + tratti di un segnale ordinario o \textit{real-time}; per questi ultimi + sarebbe anche possibile inviare un segnale per ogni scadenza, questo però + non viene fatto per evitare il rischio, tutt'altro che remoto, di riempire + la coda.} e se il sistema è sotto carico o se il segnale è bloccato, prima +della sua ricezione può passare un intervallo di tempo sufficientemente lungo +ad avere scadenze multiple, e lo stesso può accadere anche se si usa un +\textit{thread}. + +Per questo motivo il gestore del segnale o il \textit{thread} di notifica può +ottenere una indicazione di quante volte il time è scaduto utilizzando la +fuzione \funcd{timer\_getoverrun}, il cui prototipo è: +\begin{functions} + \headdecl{time.h} + + \funcdecl{int timer\_getoverrun(timer\_t timerid)} + + Ottiene il numero di scadenze di un timer POSIX. + + \bodydesc{La funzione restituisce il numero di scadenze di un timer (anche 0 + se non ve ne sono) in caso di successo e $-1$ in caso di errore, nel qual + caso \var{errno} assumerà il valore: + \begin{errlist} + \item[\errcode{EINVAL}] \param{timerid} non indica un timer valido. + \end{errlist} +} +\end{functions} -- 2.30.2