Piccole aggiunte e correzioni
[gapil.git] / fileadv.tex
index 156de8e2b94492f49205904f7d9eae6f2e8a0aad..37a6e7f23a3ad75e2cb615951b5b7c03b6de7813 100644 (file)
@@ -2100,21 +2100,49 @@ restituisce dati simili. Come per \struct{siginfo\_t} i campi che vengono
 avvalorati dipendono dal tipo di segnale e ricalcano i valori che abbiamo già
 illustrato in sez.~\ref{sec:sig_sigaction}.\footnote{si tenga presente però
   che per un bug i kernel fino al 2.6.25 non avvalorano correttamente i campi
-  \var{ssi\_ptr} e \var{ssi_int} per segnali inviati con \func{sigqueue}.}
+  \var{ssi\_ptr} e \var{ssi\_int} per segnali inviati con \func{sigqueue}.}
 
 Lo stesso paradigma di notifica tramite file descriptor usato per i segnali è
 stato adottato anche per i timer; in questo caso, rispetto a quanto visto in
 sez.~\ref{sec:sig_timer_adv}, la scadenza di un timer potrà essere letta da un
-file descriptor, senza dover ricorrere ad altri meccanismi come un segnale o
-un \textit{thread} di notifica. Di nuovo questo ha il vantaggio di poter
+file descriptor, senza dover ricorrere ad altri meccanismi di notifica come un
+segnale o un \textit{thread}. Di nuovo questo ha il vantaggio di poter
 utilizzare le funzioni dell'\textit{I/O multiplexing} per attendere allo
 stesso tempo la disponibilità di dati o la ricezione di un segnale
 qualunque.\footnote{in realtà per questo sarebbe già sufficiente
   \func{signalfd} per ricevere i segnali associati ai timer, ma la nuova
   interfaccia semplifica notevolmente la gestione.}
 
-Le funzioni di questa interfaccia riprendono da vicino 
+Le funzioni di questa interfaccia riprendono da vicino quelle introdotte da
+POSIX.1-2001 illustrate sez.~\ref{sec:sig_timer_adv}. La prima funzione, che
+consente di creare un \textit{timer} è \funcd{timerfd\_create}, il cui
+prototipo è:
+\begin{prototype}{sys/timerfd.h} 
+  {int timerfd\_create(int clockid, int flags)}
+
+  Crea un timer associato ad un file descriptor per la notifica. 
+
+  \bodydesc{La funzione restituisce un numero di file descriptor in caso di
+    successo o $-1$ in caso di errore, nel qual caso \var{errno} assumerà uno
+    dei valori:
+  \begin{errlist}
+  \item[\errcode{EINVAL}] l'argomento \param{clockid} non è
+    \const{CLOCK\_MONOTONIC} o \const{CLOCK\_REALTIME}, o
+    l'argomento \param{flag} non è valido o diverso da zero per kernel
+    precedenti il 2.6.27.
+  \item[\errcode{ENOMEM}] non c'è memoria sufficiente per creare un nuovo file
+    descriptor di \func{signalfd}.
+  \item[\errcode{ENODEV}] il kernel non può montare internamente il
+    dispositivo per la gestione anonima degli inode associati al file
+    descriptor.
+  \end{errlist}
+  ed inoltre \errval{EMFILE} e \errval{ENFILE}.  
+}
+\end{prototype}
 
+La funzione prende come primo argomento il tipo di orologio a cui il timer
+deve fare riferimento, ed i soli valori validi sono \const{CLOCK\_REALTIME},
+per indicare 
 
 
 % TODO trattare qui eventfd, timerfd introdotte con il 2.6.22