Sistemata setlogmask
authorSimone Piccardi <piccardi@gnulinux.it>
Fri, 4 Oct 2002 17:35:32 +0000 (17:35 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Fri, 4 Oct 2002 17:35:32 +0000 (17:35 +0000)
session.tex

index b2115ac..35ed018 100644 (file)
@@ -720,10 +720,15 @@ specificato da \code{argv[0]}); la stringa verr
 messaggio. Si tenga presente che il valore di \param{ident} che si passa alla
 funzione è un puntatore, se la stringa cui punta viene cambiata lo sarà pure
 nei successivi messaggi, e se viene cancellata i risultati potranno essere
-impredicibili, per questo è sempre opportuno usare una stringa costante. Il
-parametro \param{facility} permette invece di specificare l'omonimo indice per
-la categoria del messaggio; i valori possibili sono riportati in
-\tabref{tab:sess_syslog_facility}.
+impredicibili, per questo è sempre opportuno usare una stringa costante.
+
+L'argomento \param{facility} permette invece di preimpostare per le successive
+chiamate l'omonimo indice che classifica la categoria del messaggio.
+L'argomento è interpretato come una maschera binaria, e pertanto è possibile
+inviare i messaggi su più categorie alla volta; i valori delle costanti che
+identificano ciascuna categoria sono riportati in
+\tabref{tab:sess_syslog_facility}, il valore di \param{facility} deve essere
+specificato con un OR aritmetico.
 
 \begin{table}[htb]
 \centering
@@ -757,8 +762,8 @@ la categoria del messaggio; i valori possibili sono riportati in
 
 L'argomento \param{option} serve invece per controllare il comportamento della
 funzione \func{openlog} e delle modalità con cui le successive chiamate
-scriveranno i messaggi, esso viene specificato come maschera binaria composta
-con un OR aritmetico di una qualunque delle costanti riportate in
+scriveranno i messaggi, anch'esso viene specificato come maschera binaria
+composta con un OR aritmetico di una qualunque delle costanti riportate in
 \tabref{tab:sess_openlog_option}.
 
 \begin{table}[htb]
@@ -802,9 +807,19 @@ differenza 
 restituita da \code{strerror(errno)}. Gli argomenti seguenti i primi due
 devono essere forniti secondo quanto richiesto da \func{format}.
 
-L'argomento \param{priority} permette invece di impostare l'importanza del
-messaggio; il valore deve essere impostato i valori possibili sono riportati
-in \secref{tab:sess_syslog_priority}.
+L'argomento \param{priority} permette di impostare sia la \textit{facility}
+che la \textit{priority} del messaggio. In realtà viene prevalentemente usato
+per specificare solo quest'ultima in quanto la prima viene di norma
+preimpostata con \func{openlog}. La priorità è indicata con un valore
+numerico\footnote{le \acr{glibc}, seguendo POSIX.1-2001, prevedono otto
+  diverse priorità ordinate da 0 a 7, in ordine di importanza decrescente;
+  questo comporta che i tre bit meno significativi dell'argomento
+  \param{priority} sono occupati da questo valore, mentre i restanti bit più
+  significativi vengono usati per specificare la \textit{facility}.}
+specificabile attraverso le costanti riportate in
+\secref{tab:sess_syslog_priority}.  Nel caso si voglia specificare anche la
+\textit{facility} basta eseguire un OR aritmetico del valore della priorità
+con la maschera binaria delle costanti di \tabref{tab:sess_syslog_facility}.
 
 \begin{table}[htb]
 \centering
@@ -823,23 +838,30 @@ in \secref{tab:sess_syslog_priority}.
 \macro{LOG\_DEBUG}   & Messaggio di debug.\\
 \hline
 \end{tabular}
-\caption{Valori possibili per l'argomento \param{priority} di \func{syslog}.}
+\caption{Valori possibili per l'indice di importanza del messaggio da
+  specificare nell'argomento \param{priority} di \func{syslog}.}
 \label{tab:sess_syslog_priority}
 \end{table}
 
-Dato che in molti programmi 
-
-Il sistema del \textit{syslog} usa la priorità del messaggio per classificare
-gli stessi, è inoltre possibile restringere l'emissione dei messaggi
-attraverso l'uso della funzione \func{setlogmask}, il cui prototipo è:
+Una ulteriore funzione, \func{setlogmask}, permette di filtrare
+preliminarmente i messaggi in base alla loro priorità; il suo prototipo è:
 \begin{prototype}{syslog.h}
-{int setlogmask(int mask)}
+  {int setlogmask(int mask)}
 
 Imposta la maschera dei log al valore specificato.
 
 \bodydesc{La funzione restituisce il precedente valore.}
 \end{prototype}
 
+Le routine di gestione mantengono per ogni processo una maschera che determina
+quale delle chiamate effettuate a \func{syslog} verrà effettivamente
+registrata. La registrazione viene disabilitata per tutte quelle priorità che
+non rientrano nella maschera; questa viene settata usando la macro
+\code{LOG\_MASK(p)} dove \code{p} è una delle costanti di
+\secref{tab:sess_syslog_priority}. É disponibile anche la macro
+\code{LOG\_UPTO(p)} che permette di specificare automaticamente tutte le
+priorità fino ad un certo valore.
+
 
 
 \section{L'I/O su terminale}