Note su signalfd
authorSimone Piccardi <piccardi@gnulinux.it>
Mon, 6 Dec 2010 14:35:30 +0000 (14:35 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Mon, 6 Dec 2010 14:35:30 +0000 (14:35 +0000)
fileadv.tex

index 77e058e920ae77b2a6e90f00277af8ab6219cb30..76cf7b66d8e0935870dee3dddcccc93bebd2f81f 100644 (file)
@@ -1884,9 +1884,13 @@ contemporanea sia l'arrivo del segnale che la disponibilit
 relativi a questi ultimi.
 
 La funzione che permette di abilitare la ricezione dei segnali tramite file
-descriptor è \funcd{signalfd},\footnote{in realtà questa è il nome della
-  funzione fornita dalle \acr{glibc},  esistono in realtà due
-  versioni, anche se } il cui prototipo è:
+descriptor è \funcd{signalfd},\footnote{in realtà quella riportata è la
+  interfacia alla funzione fornita dalle \acr{glibc}, esistono in realtà due
+  versioni diverse della \textit{system call}, la prima versione,
+  \func{signalfd}, introdotta nel kernel 2.6.22 e disponibile con le
+  \acr{glibc} 2.8 che non supporta l'argomento, ed una seconda versione, \func{signalfd4}, che prende
+  argomenti aggiuntivi, introdotta con il kernel 2.6.27 che è quella che viene
+  sempre usata a partire dalle \acr{glibc} 2.9.} il cui prototipo è:
 \begin{prototype}{sys/signalfd.h} 
   {int signalfd(int fd, const sigset\_t *mask, int flags)}
 
@@ -1911,29 +1915,30 @@ descriptor 
 
 La funzione consente di creare o modificare le caratteristiche di un file
 descriptor speciale su cui ricevere le notifiche della ricezione di
-segnali. Per creare un nuovo file descriptor è necessario passare $-1$ come
-valore per l'argomento \param{fd}, ogni altro valore positivo verrà invece
-interpretato come il numero del file descriptor (che deve esser stato
+segnali. Per creare ex-novo uno di questi file descriptor è necessario passare
+$-1$ come valore per l'argomento \param{fd}, ogni altro valore positivo verrà
+invece interpretato come il numero del file descriptor (che deve esser stato
 precedentemente creato sempre con \func{signalfd}) di cui si vogliono
-modificare le caratteristiche. Nel primo caso la funzione ritornerà il nuovo
-file descriptor e nel secondo caso \param{fd}, in caso di errore verrà invece
-restituito $-1$.
+modificare le caratteristiche. Nel primo caso la funzione ritornerà il valore
+del nuovo file descriptor e nel secondo caso il valore indicato
+con \param{fd}, in caso di errore invece verrà restituito $-1$.
 
 L'elenco dei segnali che si vogliono gestire con \func{signalfd} deve essere
 specificato tramite l'argomento \param{mask}. Questo deve essere passato come
-puntatore ad una maschera di segnali creata con l'uso delle apposite macro
-illustrate in sez.~\ref{sec:sig_sigset} che indichi su quali segnali si
-intende operare con \func{signalfd}, l'elenco può essere modificato da una
-chiamata successiva. Dato che \const{SIGKILL} e \const{SIGSTOP} non possono
-essere intercettati (e non prevedono neanche la possibilità di un gestore) un
-loro inserimento nella maschera verrà semplicemente ignorato, senza generare
-errori.
-
-Infine l'argomento \param{flags} consente di impostare direttamente in fase di
+puntatore ad una maschera di segnali creata con l'uso delle apposite macro già
+illustrate in sez.~\ref{sec:sig_sigset}; la maschera deve indicare su quali
+segnali si intende operare con \func{signalfd}; l'elenco può essere modificato
+con una successiva chiamata a \func{signalfd}. Dato che \const{SIGKILL} e
+\const{SIGSTOP} non possono essere intercettati (e non prevedono neanche la
+possibilità di un gestore) un loro inserimento nella maschera verrà ignorato,
+senza generare errori.
+
+L'argomento \param{flags} consente di impostare direttamente in fase di
 creazione due flag per il file descriptor analoghe a quelle che si possono
 impostare con \func{open}, evitando una impostazione successiva con
-\func{fcntl}.\footnote{questo è un argomento aggiuntivo introdotto con il
-  kernel 2.6.27, in precedenza il valore era nullo } 
+\func{fcntl}.\footnote{questo è un argomento aggiuntivo, introdotto con la
+  versione fornita a partire dal kernel 2.6.27, per kernel precedenti il
+  valore deve essere nullo.}
 
 \begin{table}[htb]
   \centering