-\section{La gestione dei segnali}
+\section{La gestione di base dei segnali}
\label{sec:sig_management}
I segnali sono il primo e più classico esempio di eventi asincroni, cioè di
\bodydesc{La funzione restituisce 0 in caso di successo e $-1$ in caso di
errore nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
- \item[\errcode{EINVAL}] Il segnale specificato non esiste.
- \item[\errcode{ESRCH}] Il processo selezionato non esiste.
- \item[\errcode{EPERM}] Non si hanno privilegi sufficienti ad inviare il
+ \item[\errcode{EINVAL}] il segnale specificato non esiste.
+ \item[\errcode{ESRCH}] il processo selezionato non esiste.
+ \item[\errcode{EPERM}] non si hanno privilegi sufficienti ad inviare il
segnale.
\end{errlist}}
\end{functions}
-\section{Gestione avanzata}
-\label{sec:sig_control}
+\section{La gestione avanzata dei segnali}
+\label{sec:sig_adv_control}
Le funzioni esaminate finora fanno riferimento alle modalità più elementari
della gestione dei segnali; non si sono pertanto ancora prese in
\bodydesc{La funzione restituisce zero in caso di successo e $-1$ per un
errore, nel qual caso \var{errno} assumerà i valori:
\begin{errlist}
- \item[\errcode{EINVAL}] Si è specificato un numero di segnale invalido o si è
+ \item[\errcode{EINVAL}] si è specificato un numero di segnale invalido o si è
cercato di installare il gestore per \const{SIGKILL} o
\const{SIGSTOP}.
- \item[\errcode{EFAULT}] Si sono specificati indirizzi non validi.
+ \item[\errcode{EFAULT}] si sono specificati indirizzi non validi.
\end{errlist}}
\end{prototype}
\bodydesc{La funzione restituisce zero in caso di successo e $-1$ per un
errore, nel qual caso \var{errno} assumerà i valori:
\begin{errlist}
- \item[\errcode{EINVAL}] Si è specificato un numero di segnale invalido.
- \item[\errcode{EFAULT}] Si sono specificati indirizzi non validi.
+ \item[\errcode{EINVAL}] si è specificato un numero di segnale invalido.
+ \item[\errcode{EFAULT}] si sono specificati indirizzi non validi.
\end{errlist}}
\end{prototype}
\bodydesc{La funzione restituisce zero in caso di successo e $-1$ per un
errore, nel qual caso \var{errno} assumerà i valori:
\begin{errlist}
- \item[\errcode{EINVAL}] Si è specificato un numero di segnale invalido.
- \item[\errcode{EFAULT}] Si sono specificati indirizzi non validi.
+ \item[\errcode{EINVAL}] si è specificato un numero di segnale invalido.
+ \item[\errcode{EFAULT}] si sono specificati indirizzi non validi.
\end{errlist}}
\end{prototype}
errore, nel qual caso \var{errno} assumerà i valori:
\begin{errlist}
- \item[\errcode{ENOMEM}] La dimensione specificata per il nuovo stack è minore
+ \item[\errcode{ENOMEM}] la dimensione specificata per il nuovo stack è minore
di \const{MINSIGSTKSZ}.
- \item[\errcode{EPERM}] Uno degli indirizzi non è valido.
- \item[\errcode{EFAULT}] Si è cercato di cambiare lo stack alternativo mentre
+ \item[\errcode{EPERM}] uno degli indirizzi non è valido.
+ \item[\errcode{EFAULT}] si è cercato di cambiare lo stack alternativo mentre
questo è attivo (cioè il processo è in esecuzione su di esso).
\item[\errcode{EINVAL}] \param{ss} non è nullo e \var{ss\_flags} contiene un
valore diverso da zero che non è \const{SS\_DISABLE}.
che si è rilevata una interruzione dovuta ad un segnale.
+\section{Funzionalità avanzate}
+\label{sec:sig_real_time}
+
+
+Tratteremo in questa ultima sezione alcune funzionalità avanzate relativa ai
+segnali ed in generale ai meccanismi di notifica, a partire dalla funzioni
+introdotte per la gestione dei cosiddetti ``\textsl{segnali real-time}'', alla
+gestione avanzata delle temporizzazioni e le nuove interfacce per la gestione
+di segnali ed eventi attraverso l'uso di filedescriptor.
+
\subsection{I segnali real-time}
\label{sec:sig_real_time}
\bodydesc{La funzione restituisce 0 in caso di successo e $-1$ in caso di
errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
- \item[\errcode{EAGAIN}] La coda è esaurita, ci sono già \const{SIGQUEUE\_MAX}
- segnali in attesa si consegna.
- \item[\errcode{EPERM}] Non si hanno privilegi appropriati per inviare il
+ \item[\errcode{EAGAIN}] la coda è esaurita, ci sono già
+ \const{SIGQUEUE\_MAX} segnali in attesa si consegna.
+ \item[\errcode{EPERM}] non si hanno privilegi appropriati per inviare il
segnale al processo specificato.
- \item[\errcode{ESRCH}] Il processo \param{pid} non esiste.
- \item[\errcode{EINVAL}] Si è specificato un valore non valido per
+ \item[\errcode{ESRCH}] il processo \param{pid} non esiste.
+ \item[\errcode{EINVAL}] si è specificato un valore non valido per
\param{signo}.
\end{errlist}
ed inoltre \errval{ENOMEM}.}
\bodydesc{La funzione restituisce 0 in caso di successo e $-1$ in caso di
errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
- \item[\errcode{EINTR}] La funzione è stata interrotta.
- \item[\errcode{EINVAL}] Si è specificato un valore non valido per
+ \item[\errcode{EINTR}] la funzione è stata interrotta.
+ \item[\errcode{EINVAL}] si è specificato un valore non valido per
\param{set}.
\end{errlist}
ed inoltre \errval{EFAULT}.}
errore, nel qual caso \var{errno} assumerà uno dei valori già visti per
\func{sigwait}, ai quali si aggiunge, per \func{sigtimedwait}:
\begin{errlist}
- \item[\errcode{EAGAIN}] Si è superato il timeout senza che un segnale atteso
+ \item[\errcode{EAGAIN}] si è superato il timeout senza che un segnale atteso
fosse emesso.
\end{errlist}
}
dedicato alla gestione, che potrebbe riceverlo fra due chiamate successive.
+\subsection{La gestione avanzata delle temporizzazioni}
+\label{sec:sig_timer_adv}
+
+
+
+
+\subsection{Le interfacce per la notifica attraverso i file descriptor}
+\label{sec:sig_signalfd_eventfd}
+
+
+% TODO trattare qui eventfd signalfd e timerfd introdotte con il 2.6.22
+% vedi: http://lwn.net/Articles/233462/
+% http://lwn.net/Articles/245533/
% LocalWords: kernel POSIX timer shell control ctrl kill raise signal handler