From: Simone Piccardi Date: Sun, 20 Jun 2010 13:59:31 +0000 (+0000) Subject: Altro materiale timer e correzioni ortografiche X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=e4aa8d54ab4c1712b01e66ac8d23840bf435a5bd Altro materiale timer e correzioni ortografiche --- diff --git a/signal.tex b/signal.tex index 83f35f1..c89302f 100644 --- a/signal.tex +++ b/signal.tex @@ -2717,7 +2717,7 @@ prevalentemente con i \itindex{thread} \textit{thread}; \funcd{sigwaitinfo} e segnale in \param{info}. \funcdecl{int sigtimedwait(const sigset\_t *set, siginfo\_t *info, const - struct timespec *timout)} + struct timespec *timeout)} Analoga a \func{sigwaitinfo}, con un la possibilità di specificare un timeout in \param{timeout}. @@ -2874,10 +2874,10 @@ valore maggiore di 0, e che le ulteriori macro \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 peranto deve essere incluso per poterle + in \texttt{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 -tremite il file \procfile{/proc/timer\_list}. +tramite il file \procfile{/proc/timer\_list}. Le due funzioni che ci consentono rispettivamente di modificare o leggere il valore per uno degli orologi \textit{real-time} sono \funcd{clock\_settime} e @@ -2909,7 +2909,7 @@ tab.~\ref{tab:sig_timer_clockid_types} o con il risultato di una chiamata a \func{clock\_getcpuclockid} (che tratteremo a breve), il secondo argomento invece è sempre il puntatore \param{tp} ad una struttura \struct{timespec} (vedi fig.~\ref{fig:sys_timespec_struct}) che deve essere stata -precedentemente allocata; nel primo caso questa devrà anche essere stata +precedentemente allocata; nel primo caso questa dovrà anche essere stata inizializzata con il valore che si vuole impostare sull'orologio, mentre nel secondo verrà restituito al suo interno il valore corrente dello stesso. @@ -2946,7 +2946,7 @@ orologio, la funzione } \end{functions} -La funzione richiede come primo argomento l'indicazione dell' orologio di cui +La funzione richiede come primo argomento l'indicazione dell'orologio di cui si vuole conoscere la risoluzione (effettuata allo stesso modo delle due precedenti) e questa verrà restituita in una struttura \struct{timespec} all'indirizzo puntato dall'argomento \param{res}. @@ -3089,7 +3089,7 @@ introduce una struttura di uso generale, \struct{sigevent}, che viene utilizzata anche da altre funzioni, come quelle per l'I/O asincrono (vedi sez.~\ref{sec:file_asyncronous_io}) o le code di messaggi POSIX (vedi sez.~\ref{sec:ipc_posix_mq})) e che serve ad indicare in maniera generica un -meccanimo di notifica. +meccanismo di notifica. \begin{figure}[!htb] \footnotesize \centering @@ -3105,11 +3105,11 @@ meccanimo di notifica. La struttura \struct{sigevent} (accessibile includendo \texttt{time.h}) è riportata in fig.~\ref{fig:struct_sigevent};\footnote{la definizione effettiva dipende dall'implementazione, quella mostrata è la versione descritta nella - pagina di manule di \func{timer\_create}.} il campo \var{sigev\_notify} è il + 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 -nnotifica viene fatta impostando uno dei valori 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 @@ -3184,7 +3184,7 @@ sia stato impostato, dal limite \const{RLIMIT\_SIGPENDING} Una volta creato il timer \func{timer\_create} ed ottenuto il relativo identificatore, si può attivare o disattivare un allarme (in gergo -\textsl{armare} o \textsl{disarmare} il timer) con la fuzione +\textsl{armare} o \textsl{disarmare} il timer) con la funzione \funcd{timer\_settime}, il cui prototipo è: \begin{functions} \headdecl{signal.h} @@ -3208,11 +3208,13 @@ identificatore, si pu } \end{functions} -La funzione richiede che si indici la scadenza del timer con +La funzione richiede che si indichi la scadenza del timer con l'argomento \param{new\_value}, che deve essere specificato come puntatore ad una struttura di tipo \struct{itimerspec}, la cui definizione è riportata in -fig.~\ref{fig:struct_itimerspec}, se \param{old\_value} è diverso da -\val{NULL} il precedente valore verrà restituito in questa struttura. +fig.~\ref{fig:struct_itimerspec}; se il puntatore \param{old\_value} è diverso +da \val{NULL} il valore corrente della scadenza verrà restituito in una +analoga struttura, ovviamente in entrambi i casi le strutture devono essere +state allocate. \begin{figure}[!htb] \footnotesize \centering @@ -3227,7 +3229,7 @@ fig.~\ref{fig:struct_itimerspec}, se \param{old\_value} Ciascuno dei due campi di \struct{itimerspec} indica un tempo, da specificare con una precisione fino al nanosecondo tramite una struttura \struct{timespec} -(la cui definizione è riportata fig.~\ref{fig:sys_timespec_struct})). Il campo +(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{flag} è nullo, questo valore viene considerato come un intervallo relativo al tempo corrente,\footnote{il primo allarme scatterà cioè @@ -3238,11 +3240,16 @@ viene considerato come valore assoluto rispetto al valore dell'orologio a cui può indicare sia un tempo assoluto, se si opera rispetto all'orologio di sistema (nel qual caso il valore deve essere in secondi e nanosecondi dalla \textit{epoch}) o come un certo numero di secondi o nanosecondi rispetto - alla partenza di un orologio di CPU, } + alla partenza di un orologio di CPU.} + +Il campo \var{it\_interval} consente invece di importare 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 estensione del periodo di ripetizione della generazione dell'allarme. + +Se si indica un tempo -Se il valore di \var{it\_interval} è nullo (se cioè sono nulli tutti e due i -valori di detta struttura \struct{timespec}) l'allarme scatterà - % TODO trattare i Posix timer, e le fuzioni: % timer_getoverrun, timer_gettime, timer_settime, timer_create, timer_delete @@ -3326,6 +3333,9 @@ eventi generici) basato direttamente sull'uso di file descriptor. % LocalWords: openat readlinkat renameat symlinkat unlinkat utimensat utimes % LocalWords: LinuxThread NTPL Library clockid evp timerid sigev notify high % LocalWords: resolution CONFIG RES patch REALTIME MONOTONIC RAW NTP CPUTIME +% LocalWords: tick calendar The Epoch list getcpuclockid capability CAP getres +% LocalWords: ENOSYS pthread ENOENT NULL attribute itimerspec new old ABSTIME +% LocalWords: epoch multiplexing %%% Local Variables: