Ancora reindicizzazioni
authorSimone Piccardi <piccardi@gnulinux.it>
Tue, 27 Oct 2015 22:08:56 +0000 (22:08 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Tue, 27 Oct 2015 22:08:56 +0000 (22:08 +0000)
16 files changed:
fileadv.tex
filedir.tex
fileio.tex
intro.tex
ipc.tex
macro.tex
othersock.tex
process.tex
prochand.tex
session.tex
signal.tex
sockadv.tex
sockctrl.tex
socket.tex
system.tex
tcpsock.tex

index 8669945..2e9e781 100644 (file)
@@ -237,7 +237,7 @@ diversi che aprono lo stesso file.
 
 In particolare, come accennato in fig.~\ref{fig:file_flock_struct}, i
 \textit{file lock} sono mantenuti in una \textit{linked list} di strutture
-\kstruct{file\_lock}. La lista è referenziata dall'indirizzo di partenza
+\kstructd{file\_lock}. La lista è referenziata dall'indirizzo di partenza
 mantenuto dal campo \var{i\_flock} della struttura \kstruct{inode} (per le
 definizioni esatte si faccia riferimento al file \file{include/linux/fs.h} nei
 sorgenti del kernel).  Un bit del campo \var{fl\_flags} di specifica se si
@@ -481,7 +481,7 @@ sez.~\ref{sec:file_flock}) esaminiamo più in dettaglio come viene gestito dal
 kernel. Lo schema delle strutture utilizzate è riportato in
 fig.~\ref{fig:file_posix_lock}; come si vede esso è molto simile all'analogo
 di fig.~\ref{fig:file_flock_struct}. In questo caso nella figura si sono
-evidenziati solo i campi di \kstruct{file\_lock} significativi per la
+evidenziati solo i campi di \kstructd{file\_lock} significativi per la
 semantica POSIX, in particolare adesso ciascuna struttura contiene, oltre al
 \ids{PID} del processo in \var{fl\_pid}, la sezione di file che viene bloccata
 grazie ai campi \var{fl\_start} e \var{fl\_end}.  La struttura è comunque la
@@ -1041,7 +1041,7 @@ degli insiemi specificati (\param{readfds}, \param{writefds} e
 
 Per specificare quali file descriptor si intende selezionare la funzione usa
 un particolare oggetto, il \textit{file descriptor set}, identificato dal tipo
-\type{fd\_set}, che serve ad identificare un insieme di file descriptor, in
+\typed{fd\_set}, che serve ad identificare un insieme di file descriptor, in
 maniera analoga a come un \textit{signal set} (vedi sez.~\ref{sec:sig_sigset})
 identifica un insieme di segnali. Per la manipolazione di questi \textit{file
   descriptor set} si possono usare delle opportune macro di preprocessore:
@@ -1134,7 +1134,6 @@ riaperto. Lo standard non prevede niente al riguardo e non si deve dare per
 assunto nessuno dei due comportamenti se si vogliono scrivere programmi
 portabili.
 
-
 \itindend{file~descriptor~set}
 
 Una volta ritornata la funzione, si potrà controllare quali sono i file
@@ -1285,7 +1284,7 @@ interfaccia completamente diversa, basata sulla funzione di sistema
   introdotta in Linux come \textit{system call} a partire dal kernel 2.1.23 ed
   inserita nelle \acr{libc} 5.4.28, originariamente l'argomento \param{nfds}
   era di tipo \ctyp{unsigned int}, la funzione è stata inserita nello standard
-  POSIX.1-2001 in cui è stato introdotto il tipo nativo \type{nfds\_t}.} il
+  POSIX.1-2001 in cui è stato introdotto il tipo nativo \typed{nfds\_t}.} il
 cui prototipo è:
 
 \begin{funcproto}{
@@ -1425,20 +1424,19 @@ solito tramite \var{errno}.
 L'uso di \func{poll} consente di superare alcuni dei problemi illustrati in
 precedenza per \func{select}; anzitutto, dato che in questo caso si usa un
 vettore di strutture \struct{pollfd} di dimensione arbitraria, non esiste il
-limite introdotto dalle dimensioni massime di un \itindex{file~descriptor~set}
-\textit{file descriptor set} e la dimensione dei dati passati al kernel
-dipende solo dal numero dei file descriptor che si vogliono controllare, non
-dal loro valore. Infatti, anche se usando dei bit un \textit{file descriptor
-  set} può essere più efficiente di un vettore di strutture \struct{pollfd},
-qualora si debba osservare un solo file descriptor con un valore molto alto ci
-si troverà ad utilizzare inutilmente un maggiore quantitativo di memoria.
-
-Inoltre con \func{select} lo stesso \itindex{file~descriptor~set} \textit{file
-  descriptor set} è usato sia in ingresso che in uscita, e questo significa
-che tutte le volte che si vuole ripetere l'operazione occorre reinizializzarlo
-da capo. Questa operazione, che può essere molto onerosa se i file descriptor
-da tenere sotto osservazione sono molti, non è invece necessaria con
-\func{poll}.
+limite introdotto dalle dimensioni massime di un \textit{file descriptor set}
+e la dimensione dei dati passati al kernel dipende solo dal numero dei file
+descriptor che si vogliono controllare, non dal loro valore. Infatti, anche se
+usando dei bit un \textit{file descriptor set} può essere più efficiente di un
+vettore di strutture \struct{pollfd}, qualora si debba osservare un solo file
+descriptor con un valore molto alto ci si troverà ad utilizzare inutilmente un
+maggiore quantitativo di memoria.
+
+Inoltre con \func{select} lo stesso \textit{file descriptor set} è usato sia
+in ingresso che in uscita, e questo significa che tutte le volte che si vuole
+ripetere l'operazione occorre reinizializzarlo da capo. Questa operazione, che
+può essere molto onerosa se i file descriptor da tenere sotto osservazione
+sono molti, non è invece necessaria con \func{poll}.
 
 Abbiamo visto in sez.~\ref{sec:file_select} come lo standard POSIX preveda una
 variante di \func{select} che consente di gestire correttamente la ricezione
@@ -1507,11 +1505,11 @@ Nonostante \func{poll} presenti alcuni vantaggi rispetto a \func{select},
 anche questa funzione non è molto efficiente quando deve essere utilizzata con
 un gran numero di file descriptor,\footnote{in casi del genere \func{select}
   viene scartata a priori, perché può avvenire che il numero di file
-  descriptor ecceda le dimensioni massime di un \itindex{file~descriptor~set}
-  \textit{file descriptor set}.} in particolare nel caso in cui solo pochi di
-questi diventano attivi. Il problema in questo caso è che il tempo impiegato
-da \func{poll} a trasferire i dati da e verso il kernel è proporzionale al
-numero di file descriptor osservati, non a quelli che presentano attività.
+  descriptor ecceda le dimensioni massime di un \textit{file descriptor set}.}
+in particolare nel caso in cui solo pochi di questi diventano attivi. Il
+problema in questo caso è che il tempo impiegato da \func{poll} a trasferire i
+dati da e verso il kernel è proporzionale al numero di file descriptor
+osservati, non a quelli che presentano attività.
 
 Quando ci sono decine di migliaia di file descriptor osservati e migliaia di
 eventi al secondo (il caso classico è quello di un server web di un sito con
@@ -2594,7 +2592,7 @@ funzioni dell'I/O multiplexing viste in precedenza. Una volta che il file
 descriptor risulta pronto sarà possibile leggere il numero di volte che il
 timer è scaduto con una ordinaria \func{read}. 
 
-La funzione legge il valore in un dato di tipo \type{uint64\_t}, e necessita
+La funzione legge il valore in un dato di tipo \typed{uint64\_t}, e necessita
 pertanto che le si passi un buffer di almeno 8 byte, fallendo con
 \errval{EINVAL} in caso contrario, in sostanza la lettura deve essere
 effettuata con una istruzione del tipo:
@@ -3034,10 +3032,9 @@ stato smontato.
 Inoltre trattandosi di un file descriptor a tutti gli effetti, esso potrà
 essere utilizzato come argomento per le funzioni \func{select} e \func{poll} e
 con l'interfaccia di \textit{epoll}, ed a partire dal kernel 2.6.25 è stato
-introdotto anche il supporto per il \itindex{signal~driven~I/O}
-\texttt{signal-driven I/O}.  Siccome gli eventi vengono notificati come dati
-disponibili in lettura, dette funzioni ritorneranno tutte le volte che si avrà
-un evento di notifica. 
+introdotto anche il supporto per il \texttt{signal-driven I/O}.  Siccome gli
+eventi vengono notificati come dati disponibili in lettura, dette funzioni
+ritorneranno tutte le volte che si avrà un evento di notifica.
 
 Così, invece di dover utilizzare i segnali, considerati una pessima scelta dal
 punto di vista dell'interfaccia utente, si potrà gestire l'osservazione degli
index 5bf7096..2e6a558 100644 (file)
@@ -232,7 +232,7 @@ tab.~\ref{tab:file_inode_operations} le più rilevanti.
     \hline
   \end{tabular}
   \caption{Le principali operazioni sugli \textit{inode} definite tramite
-    \kstruct{inode\_operation}.} 
+    \kstructd{inode\_operation}.} 
   \label{tab:file_inode_operations}
 \end{table}
 
@@ -328,7 +328,7 @@ tab.~\ref{tab:file_file_operations} le più significative.
                              sez.~\ref{sec:file_asyncronous_io}) sul file.\\
     \hline
   \end{tabular}
-  \caption{Operazioni sui file definite tramite \kstruct{file\_operation}.}
+  \caption{Operazioni sui file definite tramite \kstructd{file\_operation}.}
   \label{tab:file_file_operations}
 \end{table}
 
@@ -2005,7 +2005,7 @@ sez.~\ref{sec:files_std_interface}. La prima funzione di questa interfaccia è
 \end{funcproto}
 
 La funzione apre un \textit{directory stream} per la directory
-\param{dirname}, ritornando il puntatore ad un oggetto di tipo \type{DIR} (che
+\param{dirname}, ritornando il puntatore ad un oggetto di tipo \typed{DIR} (che
 è il tipo opaco usato dalle librerie per gestire i \textit{directory stream})
 da usare per tutte le operazioni successive, la funzione inoltre posiziona lo
 \textit{stream} sulla prima voce contenuta nella directory.
@@ -3124,7 +3124,7 @@ sez.~\ref{sec:file_file_times}).
 Si noti come i vari membri della struttura siano specificati come tipi
 primitivi del sistema, di quelli definiti in
 tab.~\ref{tab:intro_primitive_types}, e dichiarati in \headfile{sys/types.h},
-con l'eccezione di \type{blksize\_t} e \type{blkcnt\_t} che sono nuovi tipi
+con l'eccezione di \typed{blksize\_t} e \typed{blkcnt\_t} che sono nuovi tipi
 introdotti per rendersi indipendenti dalla piattaforma. 
 
 Benché la descrizione dei commenti di fig.~\ref{fig:file_stat_struct} sia
@@ -4347,8 +4347,8 @@ filename e su un file descriptor, i loro prototipi sono:
 
 Entrambe le funzioni utilizzano come secondo argomento \param{mode}, una
 variabile dell'apposito tipo primitivo \type{mode\_t} (vedi
-tab.~\ref{tab:intro_primitive_types}) utilizzato per specificare i permessi sui
-file.
+tab.~\ref{tab:intro_primitive_types}) utilizzato per specificare i permessi
+sui file.
 
 \begin{table}[!htb]
   \centering
@@ -5334,11 +5334,11 @@ queste funzioni che prendiamo in esame è \funcd{acl\_init}, il cui prototipo
 
 La funzione alloca ed inizializza un'area di memoria che verrà usata per
 mantenere i dati di una ACL contenente fino ad un massimo di \param{count}
-voci. La funzione ritorna un valore di tipo \type{acl\_t} da usare in tutte le
+voci. La funzione ritorna un valore di tipo \typed{acl\_t} da usare in tutte le
 altre funzioni che operano sulla ACL. La funzione si limita alla allocazione
 iniziale e non inserisce nessun valore nella ACL che resta vuota. 
 
-Si tenga presente che pur essendo \type{acl\_t} un tipo opaco che identifica
+Si tenga presente che pur essendo \typed{acl\_t} un tipo opaco che identifica
 ``\textsl{l'oggetto}'' ACL, il valore restituito dalla funzione non è altro
 che un puntatore all'area di memoria allocata per i dati richiesti. Pertanto
 in caso di fallimento verrà restituito un puntatore nullo di tipo
@@ -5473,7 +5473,7 @@ tramite un file descriptor usando \func{acl\_get\_fd} o con un
 funzione, che può richiedere anche la ACL relativa ad una directory, il
 secondo argomento \param{type} consente di specificare se si vuole ottenere la
 ACL di default o quella di accesso. Questo argomento deve essere di tipo
-\type{acl\_type\_t} e può assumere solo i due valori riportati in
+\typed{acl\_type\_t} e può assumere solo i due valori riportati in
 tab.~\ref{tab:acl_type}.
 
 \begin{table}[htb]
@@ -5851,7 +5851,7 @@ manuale.
 
 Se si vuole operare direttamente sui contenuti di un oggetto di tipo
 \type{acl\_t} infatti occorre fare riferimento alle singole voci tramite gli
-opportuni puntatori di tipo \type{acl\_entry\_t}, che possono essere ottenuti
+opportuni puntatori di tipo \typed{acl\_entry\_t}, che possono essere ottenuti
 dalla funzione \funcm{acl\_get\_entry} (per una voce esistente) o dalla
 funzione \funcm{acl\_create\_entry} per una voce da aggiungere. Nel caso della
 prima funzione si potrà poi ripetere la lettura per ottenere i puntatori alle
@@ -7120,7 +7120,7 @@ della suddetta libreria attraverso l'opzione \texttt{-lcap}.
 
 Le funzioni dell'interfaccia alle \textit{capabilities} definite nelle bozze
 dello standard POSIX.1e prevedono l'uso di un tipo di dato opaco,
-\type{cap\_t}, come puntatore ai dati mantenuti nel cosiddetto
+\typed{cap\_t}, come puntatore ai dati mantenuti nel cosiddetto
 \textit{capability state},\footnote{si tratta in sostanza di un puntatore ad
   una struttura interna utilizzata dalle librerie, i cui campi non devono mai
   essere acceduti direttamente.} in sono memorizzati tutti i dati delle
@@ -7263,7 +7263,7 @@ tab.~\ref{tab:cap_set_identifier}.
     \constd{CAP\_INHERITABLE}& Capacità dell'insieme \textsl{ereditabile}.\\
     \hline
   \end{tabular}
-  \caption{Valori possibili per il tipo di dato \type{cap\_flag\_t} che
+  \caption{Valori possibili per il tipo di dato \typed{cap\_flag\_t} che
     identifica gli insiemi delle \textit{capabilities}.}
   \label{tab:cap_set_identifier}
 \end{table}
@@ -7335,7 +7335,7 @@ In entrambe le funzioni l'argomento \param{cap\_p} indica il puntatore al
 indica su quale dei tre insiemi si intende operare, sempre con i valori di
 tab.~\ref{tab:cap_set_identifier}.  La capacità che si intende controllare o
 impostare invece deve essere specificata attraverso una variabile di tipo
-\type{cap\_value\_t}, che può prendere come valore uno qualunque di quelli
+\typed{cap\_value\_t}, che può prendere come valore uno qualunque di quelli
 riportati in tab.~\ref{tab:proc_capabilities}, in questo caso però non è
 possibile combinare diversi valori in una maschera binaria, una variabile di
 tipo \type{cap\_value\_t} può indicare una sola capacità.\footnote{in
@@ -7360,7 +7360,7 @@ tab.~\ref{tab:cap_value_type}.
     \constd{CAP\_SET}  & La capacità è impostata.\\
     \hline
   \end{tabular}
-  \caption{Valori possibili per il tipo di dato \type{cap\_flag\_value\_t} che
+  \caption{Valori possibili per il tipo di dato \typed{cap\_flag\_value\_t} che
     indica lo stato di una capacità.}
   \label{tab:cap_value_type}
 \end{table}
index 16a8ca8..be0ef23 100644 (file)
@@ -59,10 +59,10 @@ file dovrà essere chiuso, e questo chiuderà il canale di comunicazione
 impedendo ogni ulteriore operazione.
 
 All'interno di ogni processo i file aperti sono identificati da un numero
-intero non negativo, che viene chiamato \textit{file descriptor}.  Quando un
-file viene aperto la funzione \func{open} restituisce questo numero, tutte le
-ulteriori operazioni dovranno essere compiute specificando questo stesso
-numero come argomento alle varie funzioni dell'interfaccia.
+intero non negativo, che viene chiamato appunto \textit{file descriptor}.
+Quando un file viene aperto la funzione \func{open} restituisce questo numero,
+tutte le ulteriori operazioni dovranno essere compiute specificando questo
+stesso numero come argomento alle varie funzioni dell'interfaccia.
 
 \itindbeg{process~table}
 \itindbeg{file~table}
@@ -109,7 +109,7 @@ particolare:
   \centering
   \includegraphics[width=12cm]{img/procfile}
   \caption{Schema della architettura dell'accesso ai file attraverso
-  l'interfaccia dei \textit{file descriptor}.}
+  l'interfaccia dei file descriptor.}
   \label{fig:file_proc_file}
 \end{figure}
 
@@ -133,18 +133,18 @@ essenziali come:
   \textit{file table}.
 \end{itemize*}
 
-In questa infrastruttura un \textit{file descriptor} non è altro che l'intero
-positivo che indicizza quest'ultima tabella, e che consente di recuperare il
-puntatore alla struttura \kstruct{file} corrispondente al file aperto dal
-processo a cui era stato assegnato questo indice. Una volta ottenuta grazie al
-\textit{file descriptor} la struttura \kstruct{file} corrispondente al file
-voluto nella \textit{file table}, il kernel potrà usare le funzioni messe
-disposizione dal VFS per eseguire sul file tutte le operazioni necessarie.
+In questa infrastruttura un file descriptor non è altro che l'intero positivo
+che indicizza quest'ultima tabella, e che consente di recuperare il puntatore
+alla struttura \kstruct{file} corrispondente al file aperto dal processo a cui
+era stato assegnato questo indice. Una volta ottenuta grazie al file
+descriptor la struttura \kstruct{file} corrispondente al file voluto nella
+\textit{file table}, il kernel potrà usare le funzioni messe disposizione dal
+VFS per eseguire sul file tutte le operazioni necessarie.
 
 Il meccanismo dell'apertura dei file prevede che venga sempre fornito il primo
-\textit{file descriptor} libero nella tabella, e per questo motivo essi
-vengono assegnati in successione tutte le volte che si apre un nuovo file,
-posto che non ne sia stato chiuso nessuno in precedenza.
+file descriptor libero nella tabella, e per questo motivo essi vengono
+assegnati in successione tutte le volte che si apre un nuovo file, posto che
+non ne sia stato chiuso nessuno in precedenza.
 
 \itindbeg{standard~input} 
 \itindbeg{standard~output}
@@ -178,12 +178,9 @@ tab.~\ref{tab:file_std_files}.
     \textbf{File} & \textbf{Significato} \\
     \hline
     \hline
-    \constd{STDIN\_FILENO}  & \textit{file descriptor} dello \textit{standard
-                              input}.\\ 
-    \constd{STDOUT\_FILENO} & \textit{file descriptor} dello \textit{standard
-                              output}.\\
-    \constd{STDERR\_FILENO} & \textit{file descriptor} dello \textit{standard
-                              error}.\\
+    \constd{STDIN\_FILENO}  & file descriptor dello \textit{standard input}.\\ 
+    \constd{STDOUT\_FILENO} & file descriptor dello \textit{standard output}.\\
+    \constd{STDERR\_FILENO} & file descriptor dello \textit{standard error}.\\
     \hline
   \end{tabular}
   \caption{Costanti definite in \headfile{unistd.h} per i file standard.}
@@ -2462,7 +2459,7 @@ concorrente ed in sez.~\ref{sec:file_access_control} per il controllo di
 accesso.
 
 Per ragioni storiche la struttura di dati che rappresenta uno \textit{stream}
-è stata chiamata \type{FILE}, questi oggetti sono creati dalle funzioni di
+è stata chiamata \typed{FILE}, questi oggetti sono creati dalle funzioni di
 libreria e contengono tutte le informazioni necessarie a gestire le operazioni
 sugli \textit{stream}, come la posizione corrente, lo stato del buffer e degli
 indicatori di stato e di fine del file.
@@ -2940,7 +2937,7 @@ intero di tipo \ctyp{long}. Dato che in certi casi, ad esempio quando si usa
 un filesystem indicizzato a 64 bit su una macchina con architettura a 32 bit,
 questo può non essere possibile lo standard POSIX ha introdotto le nuove
 funzioni \funcd{fgetpos} e \funcd{fsetpos}, che invece usano il nuovo tipo
-\type{fpos\_t}, ed i cui prototipi sono:
+\typed{fpos\_t}, ed i cui prototipi sono:
 
 \begin{funcproto}{
 \fhead{stdio.h}
index 28f81d6..dba0ded 100644 (file)
--- a/intro.tex
+++ b/intro.tex
@@ -892,30 +892,30 @@ infinita serie di problemi di portabilità.
     \textbf{Tipo} & \textbf{Contenuto} \\
     \hline
     \hline
-    \type{caddr\_t} & Core address.\\
-    \type{clock\_t} & Contatore del \textit{process time} (vedi
+    \typed{caddr\_t} & Core address.\\
+    \typed{clock\_t} & Contatore del \textit{process time} (vedi
                       sez.~\ref{sec:sys_cpu_times}.\\ 
-    \type{dev\_t}   & Numero di dispositivo (vedi sez.~\ref{sec:file_mknod}).\\
-    \type{gid\_t}   & Identificatore di un gruppo (vedi
+    \typed{dev\_t}   & Numero di dispositivo (vedi sez.~\ref{sec:file_mknod}).\\
+    \typed{gid\_t}   & Identificatore di un gruppo (vedi
                       sez.~\ref{sec:proc_access_id}).\\
-    \type{ino\_t}   & Numero di \textit{inode} 
+    \typed{ino\_t}   & Numero di \textit{inode} 
                       (vedi sez.~\ref{sec:file_vfs_work}).\\ 
-    \type{key\_t}   & Chiave per il System V IPC (vedi
+    \typed{key\_t}   & Chiave per il System V IPC (vedi
                       sez.~\ref{sec:ipc_sysv_generic}).\\
-    \type{loff\_t}  & Posizione corrente in un file.\\
-    \type{mode\_t}  & Attributi di un file.\\
-    \type{nlink\_t} & Contatore dei collegamenti su un file.\\
-    \type{off\_t}   & Posizione corrente in un file.\\
-    \type{pid\_t}   & Identificatore di un processo (vedi
+    \typed{loff\_t}  & Posizione corrente in un file.\\
+    \typed{mode\_t}  & Attributi di un file.\\
+    \typed{nlink\_t} & Contatore dei collegamenti su un file.\\
+    \typed{off\_t}   & Posizione corrente in un file.\\
+    \typed{pid\_t}   & Identificatore di un processo (vedi
                       sez.~\ref{sec:proc_pid}).\\
-    \type{rlim\_t}  & Limite sulle risorse.\\
-    \type{sigset\_t}& Insieme di segnali (vedi sez.~\ref{sec:sig_sigset}).\\
-    \type{size\_t}  & Dimensione di un oggetto.\\
-    \type{ssize\_t} & Dimensione in numero di byte ritornata dalle funzioni.\\
-    \type{ptrdiff\_t}& Differenza fra due puntatori.\\
-    \type{time\_t}  & Numero di secondi (in \textit{calendar time}, vedi 
+    \typed{rlim\_t}  & Limite sulle risorse.\\
+    \typed{sigset\_t}& Insieme di segnali (vedi sez.~\ref{sec:sig_sigset}).\\
+    \typed{size\_t}  & Dimensione di un oggetto.\\
+    \typed{ssize\_t} & Dimensione in numero di byte ritornata dalle funzioni.\\
+    \typed{ptrdiff\_t}& Differenza fra due puntatori.\\
+    \typed{time\_t}  & Numero di secondi (in \textit{calendar time}, vedi 
                       sez.~\ref{sec:sys_time}).\\
-    \type{uid\_t}   & Identificatore di un utente (vedi
+    \typed{uid\_t}   & Identificatore di un utente (vedi
                       sez.~\ref{sec:proc_access_id}).\\
     \hline
   \end{tabular}
@@ -1401,13 +1401,13 @@ una opportuna macro; queste estensioni sono illustrate nel seguente elenco:
   presente negli standard con i file di grandi dimensioni, ed in particolare
   definire le due funzioni \func{fseeko} e \func{ftello} che al contrario
   delle corrispettive \func{fseek} e \func{ftell} usano il tipo di dato
-  specifico \ctyp{off\_t} (vedi sez.~\ref{sec:file_io}).
+  specifico \type{off\_t} (vedi sez.~\ref{sec:file_io}).
 
 \item[\macrod{\_LARGEFILE64\_SOURCE}] definendo questa macro si rendono
   disponibili le funzioni di una interfaccia alternativa al supporto di valori
   a 64 bit nelle funzioni di gestione dei file (non supportati in certi
   sistemi), caratterizzate dal suffisso \texttt{64} aggiunto ai vari nomi di
-  tipi di dato e funzioni (come \type{off64\_t} al posto di \type{off\_t} o
+  tipi di dato e funzioni (come \typed{off64\_t} al posto di \type{off\_t} o
   \funcm{lseek64} al posto di \func{lseek}).
 
   Le funzioni di questa interfaccia alternativa sono state proposte come una
diff --git a/ipc.tex b/ipc.tex
index 9b7ac1a..91d38fe 100644 (file)
--- a/ipc.tex
+++ b/ipc.tex
@@ -1088,7 +1088,7 @@ solo se tutti i controlli elencati falliscono l'accesso è negato. Si noti che
 a differenza di quanto avviene per i permessi dei file, fallire in uno dei
 passi elencati non comporta il fallimento dell'accesso. Un'ulteriore
 differenza rispetto a quanto avviene per i file è che per gli oggetti di IPC
-il valore di \itindex{umask} \textit{umask} (si ricordi quanto esposto in
+il valore di \textit{umask} (si ricordi quanto esposto in
 sez.~\ref{sec:file_perm_management}) non ha alcun significato.
 
 
@@ -1327,7 +1327,7 @@ coda alla lista e vengono letti dalla cima, in fig.~\ref{fig:ipc_mq_schema} si
 dal kernel. Lo schema illustrato in realtà è una semplificazione di quello
 usato fino ai kernel della serie 2.2. A partire della serie 2.4 la gestione
 delle code di messaggi è effettuata in maniera diversa (e non esiste una
-struttura \struct{msqid\_ds} nel kernel), ma abbiamo mantenuto lo schema
+struttura \kstruct{msqid\_ds} nel kernel), ma abbiamo mantenuto lo schema
 precedente dato che illustra in maniera più che adeguata i principi di
 funzionamento delle code di messaggi.
 
@@ -1335,12 +1335,13 @@ funzionamento delle code di messaggi.
 
 \begin{figure}[!htb]
   \centering \includegraphics[width=13cm]{img/mqstruct}
-  \caption{Schema della struttura di una coda messaggi.}
+  \caption{Schema delle strutture di una coda di messaggi
+    (\kstructd{msqid\_ds} e \kstructd{msg}).}
   \label{fig:ipc_mq_schema}
 \end{figure}
 
 
-A ciascuna coda è associata una struttura \struct{msqid\_ds} la cui
+A ciascuna coda è associata una struttura \kstruct{msqid\_ds} la cui
 definizione è riportata in fig.~\ref{fig:ipc_msqid_ds} ed a cui si accede
 includendo \headfiled{sys/msg.h};
 %
@@ -1536,13 +1537,13 @@ dovrà essere pari a \const{LENGTH}).
 
 Per capire meglio il funzionamento della funzione riprendiamo in
 considerazione la struttura della coda illustrata in
-fig.~\ref{fig:ipc_mq_schema}. Alla chiamata di \func{msgsnd} il nuovo messaggio
-sarà aggiunto in fondo alla lista inserendo una nuova struttura \struct{msg},
-il puntatore \var{msg\_last} di \struct{msqid\_ds} verrà aggiornato, come pure
-il puntatore al messaggio successivo per quello che era il precedente ultimo
-messaggio; il valore di \var{mtype} verrà mantenuto in \var{msg\_type} ed il
-valore di \param{msgsz} in \var{msg\_ts}; il testo del messaggio sarà copiato
-all'indirizzo specificato da \var{msg\_spot}.
+fig.~\ref{fig:ipc_mq_schema}. Alla chiamata di \func{msgsnd} il nuovo
+messaggio sarà aggiunto in fondo alla lista inserendo una nuova struttura
+\kstruct{msg}, il puntatore \var{msg\_last} di \kstruct{msqid\_ds} verrà
+aggiornato, come pure il puntatore al messaggio successivo per quello che era
+il precedente ultimo messaggio; il valore di \var{mtype} verrà mantenuto in
+\var{msg\_type} ed il valore di \param{msgsz} in \var{msg\_ts}; il testo del
+messaggio sarà copiato all'indirizzo specificato da \var{msg\_spot}.
 
 Il valore dell'argomento \param{flag} permette di specificare il comportamento
 della funzione. Di norma, quando si specifica un valore nullo, la funzione
@@ -2408,18 +2409,20 @@ versioni delle librerie del C, come le \acr{libc5}).
 
 \begin{figure}[!htb]
   \centering \includegraphics[width=12cm]{img/semtruct}
-  \caption{Schema della struttura di un insieme di semafori.}
+  \caption{Schema delle varie strutture di un insieme di semafori
+    (\kstructd{semid\_ds}, \kstructd{sem}, \kstructd{sem\_queue} e
+    \kstructd{sem\_undo}).}
   \label{fig:ipc_sem_schema}
 \end{figure}
 
 Alla creazione di un nuovo insieme viene allocata una nuova strutture
-\struct{semid\_ds} ed il relativo vettore di strutture \struct{sem}. Quando si
-richiede una operazione viene anzitutto verificato che tutte le operazioni
+\kstruct{semid\_ds} ed il relativo vettore di strutture \kstruct{sem}. Quando
+si richiede una operazione viene anzitutto verificato che tutte le operazioni
 possono avere successo; se una di esse comporta il blocco del processo il
 kernel crea una struttura \kstruct{sem\_queue} che viene aggiunta in fondo
 alla coda di attesa associata a ciascun insieme di semafori, che viene
 referenziata tramite i campi \var{sem\_pending} e \var{sem\_pending\_last} di
-\struct{semid\_ds}.  Nella struttura viene memorizzato il riferimento alle
+\kstruct{semid\_ds}.  Nella struttura viene memorizzato il riferimento alle
 operazioni richieste (nel campo \var{sops}, che è un puntatore ad una
 struttura \struct{sembuf}) e al processo corrente (nel campo \var{sleeper})
 poi quest'ultimo viene messo stato di attesa e viene invocato lo
@@ -3702,7 +3705,7 @@ una coda di messaggi POSIX è \funcd{mq\_open}, ed il suo prototipo è:
 La funzione apre la coda di messaggi identificata dall'argomento \param{name}
 restituendo il descrittore ad essa associato, del tutto analogo ad un file
 descriptor, con l'unica differenza che lo standard prevede un apposito tipo
-\type{mqd\_t}. Nel caso di Linux si tratta in effetti proprio di un normale
+\typed{mqd\_t}. Nel caso di Linux si tratta in effetti proprio di un normale
 file descriptor; pertanto, anche se questo comportamento non è portabile, lo
 si può tenere sotto osservazione con le funzioni dell'I/O multiplexing (vedi
 sez.~\ref{sec:file_multiplexing}) come possibile alternativa all'uso
@@ -4479,10 +4482,9 @@ Si tenga presente che, come accennato in sez.~\ref{sec:ipc_posix_generic}, i
 semafori usano la semantica standard dei file per quanto riguarda i controlli
 di accesso, questo significa che un nuovo semaforo viene sempre creato con
 l'\ids{UID} ed il \ids{GID} effettivo del processo chiamante, e che i permessi
-indicati con \param{mode} vengono filtrati dal valore della \itindex{umask}
-\textit{umask} del processo.  Inoltre per poter aprire un semaforo è
-necessario avere su di esso sia il permesso di lettura che quello di
-scrittura.
+indicati con \param{mode} vengono filtrati dal valore della \textit{umask} del
+processo.  Inoltre per poter aprire un semaforo è necessario avere su di esso
+sia il permesso di lettura che quello di scrittura.
 
 La funzione restituisce in caso di successo un puntatore all'indirizzo del
 semaforo con un valore di tipo \ctyp{sem\_t *}, è questo valore che dovrà
index 5daa9dd..38b2f07 100644 (file)
--- a/macro.tex
+++ b/macro.tex
 %\index{struttura dati del kernel!{#1}@{{\tt {#1}}}!definizione di}\texttt{#1}%
 %\index{#1@{{\tt {#1}} (struttura dati)}!definizione di}\texttt{#1}%
 }                                     % struttura dati
-\newcommand{\type}[1]{%
+\newcommand{\typed}[1]{%
 \index{tipo di dato!{#1}@{{\tt {#1}}}}\texttt{#1}%
 %\index{#1@{{\tt {#1}} (tipo)}}\texttt{#1}%
 }                                     % system type
+\newcommand{\type}[1]{%
+\texttt{#1}%
+%\index{tipo di dato!{#1}@{{\tt {#1}}}}\texttt{#1}%
+%\index{#1@{{\tt {#1}} (tipo)}}\texttt{#1}%
+}                                     % system type
 \newcommand{\struct}[1]{%
 \texttt{#1}%
 %\index{struttura dati!{#1}@{{\tt {#1}}}}\texttt{#1}%
index 2474abe..6d73bee 100644 (file)
@@ -131,11 +131,11 @@ la destinazione dei dati trasmessi o ottenere l'origine dei dati ricevuti. La
 prima di queste funzioni è \funcd{sendto} ed il suo prototipo\footnote{il
   prototipo illustrato è quello utilizzato dalle \acr{glibc}, che seguono le
   \textit{Single Unix Specification}, l'argomento \param{flags} era di tipo
-  \texttt{int} nei vari BSD4.*, mentre nelle \acr{libc4} e \acr{libc5} veniva
-  usato un \texttt{unsigned int}; l'argomento \param{len} era \texttt{int} nei
-  vari BSD4.* e nelle \acr{libc4}, ma \type{size\_t} nelle \acr{libc5}; infine
-  l'argomento \param{tolen} era \texttt{int} nei vari BSD4.* nelle \acr{libc4}
-  e nelle \acr{libc5}.} è:
+  \ctyp{int} nei vari BSD4.*, mentre nelle \acr{libc4} e \acr{libc5} veniva
+  usato un \texttt{unsigned int}; l'argomento \param{len} era \ctyp{int} nei
+  vari BSD4.* e nelle \acr{libc4}, ma \type{size\_t} nelle \acr{libc5};
+  infine l'argomento \param{tolen} era \ctyp{int} nei vari BSD4.* nelle
+  \acr{libc4} e nelle \acr{libc5}.} è:
 \begin{functions}
   \headdecl{sys/types.h}
   \headdecl{sys/socket.h}
@@ -220,9 +220,9 @@ La seconda funzione utilizzata nella comunicazione fra socket UDP è
 \funcd{recvfrom}, che serve a ricevere i dati inviati da un altro socket; il
 suo prototipo\footnote{il prototipo è quello delle \acr{glibc} che seguono le
   \textit{Single Unix Specification}, i vari BSD4.*, le \acr{libc4} e le
-  \acr{libc5} usano un \texttt{int} come valore di ritorno; per gli argomenti
+  \acr{libc5} usano un \ctyp{int} come valore di ritorno; per gli argomenti
   \param{flags} e \param{len} vale quanto detto a proposito di \func{sendto};
-  infine l'argomento \param{fromlen} è \texttt{int} per i vari BSD4.*, le
+  infine l'argomento \param{fromlen} è \ctyp{int} per i vari BSD4.*, le
   \acr{libc4} e le \acr{libc5}.} è:
 \begin{functions}
   \headdecl{sys/types.h}
index 4364288..592186c 100644 (file)
@@ -1224,12 +1224,12 @@ segmento dati\footnote{in questo caso si tratta soltanto di una funzione di
   caso \var{errno} assumerà il valore \errcode{ENOMEM}.}
 \end{funcproto}
 
-La funzione incrementa la dimensione dello \textit{heap} di un
-programma del valore indicato dall'argomento \param{increment}, restituendo il
-nuovo indirizzo finale dello stesso.  L'argomento è definito come di tipo
-\type{intptr\_t}, ma a seconda della versione delle librerie e del sistema può
-essere indicato con una serie di tipi equivalenti come \ctyp{ptrdiff\_t},
-\ctyp{ssize\_t}, \ctyp{int}. Se invocata con un valore nullo la funzione
+La funzione incrementa la dimensione dello \textit{heap} di un programma del
+valore indicato dall'argomento \param{increment}, restituendo il nuovo
+indirizzo finale dello stesso.  L'argomento è definito come di tipo
+\typed{intptr\_t}, ma a seconda della versione delle librerie e del sistema
+può essere indicato con una serie di tipi equivalenti come \type{ptrdiff\_t},
+\type{ssize\_t}, \ctyp{int}. Se invocata con un valore nullo la funzione
 permette di ottenere l'attuale posizione della fine del segmento dati.
 
 Queste due funzioni sono state deliberatamente escluse dallo standard POSIX.1
@@ -2390,10 +2390,10 @@ una lista degli argomenti, la sua definizione è:
 }
 \end{funcbox}}
 
-La macro inizializza il puntatore alla lista di argomenti \param{ap} che
-deve essere una apposita variabile di tipo \type{va\_list}; il
+La macro inizializza il puntatore alla lista di argomenti \param{ap} che deve
+essere una apposita variabile di tipo \type{va\_list}; il
 parametro \param{last} deve indicare il nome dell'ultimo degli argomenti fissi
-dichiarati nel prototipo della funzione \textit{variadic}. 
+dichiarati nel prototipo della funzione \textit{variadic}.
 
 \macrobeg{va\_arg}
 
@@ -2485,15 +2485,15 @@ assolutamente normale pensare di poter effettuare questa operazione.
 \index{tipo!opaco|(}
 
 In generale però possono esistere anche realizzazioni diverse, ed è per questo
-motivo che invece che di un semplice puntatore viene \type{va\_list} è quello
-che viene chiamato un \textsl{tipo opaco}. Si chiamano così quei tipi di dati,
-in genere usati da una libreria, la cui struttura interna non deve essere
-vista dal programma chiamante (da cui deriva il nome opaco) che li devono
-utilizzare solo attraverso dalle opportune funzioni di gestione.
+motivo che invece che un semplice puntatore, \typed{va\_list} è quello che
+viene chiamato un \textsl{tipo opaco}. Si chiamano così quei tipi di dati, in
+genere usati da una libreria, la cui struttura interna non deve essere vista
+dal programma chiamante (da cui deriva il nome opaco) che li devono utilizzare
+solo attraverso dalle opportune funzioni di gestione.
 
 \index{tipo!opaco|)}
 
-Per questo motivo una variabile di tipo \type{va\_list} non può essere
+Per questo motivo una variabile di tipo \typed{va\_list} non può essere
 assegnata direttamente ad un'altra variabile dello stesso tipo, ma lo standard
 ISO C99\footnote{alcuni sistemi che non hanno questa macro provvedono al suo
   posto \macrod{\_\_va\_copy} che era il nome proposto in una bozza dello
@@ -2598,7 +2598,7 @@ di salvare il contesto dello \textit{stack} è \funcd{setjmp}, il cui prototipo
   
 Quando si esegue la funzione il contesto corrente dello \textit{stack} viene
 salvato nell'argomento \param{env}, una variabile di tipo
-\type{jmp\_buf}\footnote{anche questo è un classico esempio di variabile di
+\typed{jmp\_buf}\footnote{anche questo è un classico esempio di variabile di
   \textsl{tipo opaco}.}  che deve essere stata definita in precedenza. In
 genere le variabili di tipo \type{jmp\_buf} vengono definite come variabili
 globali in modo da poter essere viste in tutte le funzioni del programma.
index df3eadc..62a7ea5 100644 (file)
@@ -145,8 +145,9 @@ fig.~\ref{fig:proc_task_struct}.
 
 \begin{figure}[!htb]
   \centering \includegraphics[width=14cm]{img/task_struct}
-  \caption{Schema semplificato dell'architettura delle strutture usate dal
-    kernel nella gestione dei processi.}
+  \caption{Schema semplificato dell'architettura delle strutture (
+    \kstructd{task\_struct}, \kstructd{fs\_struct}, \kstructd{file\_struct})
+    usate dal kernel nella gestione dei processi.}
   \label{fig:proc_task_struct}
 \end{figure}
 
@@ -3197,7 +3198,7 @@ conveniente l'uso dell'affinità di processore.
 
 Dato che il numero di processori può variare a seconda delle architetture, per
 semplificare l'uso dell'argomento \param{mask} la \acr{glibc} ha introdotto un
-apposito dato di tipo, \type{cpu\_set\_t},\footnote{questa è una estensione
+apposito dato di tipo, \typed{cpu\_set\_t},\footnote{questa è una estensione
   specifica della \acr{glibc}, da attivare definendo la macro
   \macro{\_GNU\_SOURCE}, non esiste infatti una standardizzazione per questo
   tipo di interfaccia e POSIX al momento non prevede nulla al riguardo.} che
@@ -3226,11 +3227,14 @@ se esso è già presente in un insieme, sono le seguenti:
 \fdecl{void \macrod{CPU\_ZERO}(cpu\_set\_t *set)}
 \fdesc{Inizializza un insieme di processori vuoto \param{set}.} 
 \fdecl{void \macrod{CPU\_SET}(int cpu, cpu\_set\_t *set)}
-\fdesc{Inserisce il processore \param{cpu} nell'insieme di processori \param{set}.} 
+\fdesc{Inserisce il processore \param{cpu} nell'insieme di
+  processori \param{set}.}  
 \fdecl{void \macrod{CPU\_CLR}(int cpu, cpu\_set\_t *set)}
-\fdesc{Rimuove il processore \param{cpu} nell'insieme di processori \param{set}.} 
+\fdesc{Rimuove il processore \param{cpu} nell'insieme di
+  processori \param{set}.}  
 \fdecl{int \macrod{CPU\_ISSET}(int cpu, cpu\_set\_t *set)}
-\fdesc{Controlla se il processore \param{cpu} è nell'insieme di processori \param{set}.} 
+\fdesc{Controlla se il processore \param{cpu} è nell'insieme di
+  processori \param{set}.}  
 }
 \end{funcbox}}
 
@@ -4356,7 +4360,7 @@ operazione è messa in discussione, per cui l'assenza di eventuali \textit{race
   condition} (vedi sez.~\ref{sec:proc_race_cond}) deve essere sempre
 verificata nei minimi dettagli.
 
-In questo caso il sistema provvede un tipo di dato, il \type{sig\_atomic\_t},
+In questo caso il sistema provvede un tipo di dato, il \typed{sig\_atomic\_t},
 il cui accesso è assicurato essere atomico.  In pratica comunque si può
 assumere che, in ogni piattaforma su cui è implementato Linux, il tipo
 \ctyp{int}, gli altri interi di dimensione inferiore ed i puntatori sono
index 93f7d5e..5a96413 100644 (file)
@@ -743,9 +743,9 @@ occorrerà predisporlo in modo che esso compia le seguenti azioni:
   il programma), per evitare che la directory da cui si è lanciato il processo
   resti in uso e non sia possibile rimuoverla o smontare il filesystem che la
   contiene.
-\item Impostare la \itindex{umask} maschera dei permessi (di solito con
-  \code{umask(0)}) in modo da non essere dipendenti dal valore ereditato da
-  chi ha lanciato originariamente il processo.
+\item Impostare la maschera dei permessi (di solito con \code{umask(0)}) in
+  modo da non essere dipendenti dal valore ereditato da chi ha lanciato
+  originariamente il processo.
 \item Chiudere tutti i file aperti che non servono più (in generale tutti); in
   particolare vanno chiusi i file standard che di norma sono ancora associati
   al terminale (un'altra opzione è quella di redirigerli verso
@@ -1538,7 +1538,7 @@ ne aggiungono degli altri per mantenere ulteriori informazioni.\footnote{la
 
 I primi quattro campi sono quattro flag che controllano il comportamento del
 terminale; essi sono realizzati come maschera binaria, pertanto il tipo
-\type{tcflag\_t} è di norma realizzato con un intero senza segno di lunghezza
+\typed{tcflag\_t} è di norma realizzato con un intero senza segno di lunghezza
 opportuna. I valori devono essere specificati bit per bit, avendo cura di non
 modificare i bit su cui non si interviene.
 
index 070ce85..2f5516b 100644 (file)
@@ -1048,7 +1048,7 @@ quanto non sia la versione originaria, che di norma è definita come:
 questa infatti, per la poca chiarezza della sintassi del C quando si vanno a
 trattare puntatori a funzioni, è molto meno comprensibile.  Da un confronto
 con il precedente prototipo si può dedurre la definizione di
-\type{sighandler\_t} che è:
+\typed{sighandler\_t} che è:
 \includecodesnip{listati/sighandler_t.c}
 e cioè un puntatore ad una funzione \ctyp{void} (cioè senza valore di ritorno)
 e che prende un argomento di tipo \ctyp{int}. Si noti come si devono usare le
@@ -2756,7 +2756,7 @@ mentre per la restituzione dei dati viene usato il campo \var{si\_value}.
   \end{minipage} 
   \normalsize 
   \caption{La definizione dell'unione \structd{sigval}, definita anche come
-    tipo \type{sigval\_t}.}
+    tipo \typed{sigval\_t}.}
   \label{fig:sig_sigval}
 \end{figure}
 
@@ -3041,7 +3041,7 @@ tab.~\ref{tab:sig_timer_clockid_types}.
 %    \const{}   & .\\
     \hline
   \end{tabular}
-  \caption{Valori possibili per una variabile di tipo \type{clockid\_t} 
+  \caption{Valori possibili per una variabile di tipo \typed{clockid\_t} 
     usata per indicare a quale tipo di orologio si vuole fare riferimento.}
   \label{tab:sig_timer_clockid_types}
 \end{table}
@@ -3381,7 +3381,7 @@ per \var{sigev\_notify}, \signal{SIGALRM} per \var{sigev\_signo} e
 l'identificatore del timer come valore per \var{sigev\_value.sival\_int}.
 
 Il terzo argomento deve essere l'indirizzo di una variabile di tipo
-\type{timer\_t} dove sarà scritto l'identificativo associato al timer appena
+\typed{timer\_t} dove sarà scritto l'identificativo associato al timer appena
 creato, da usare in tutte le successive funzioni di gestione. Una volta creato
 questo identificativo resterà univoco all'interno del processo stesso fintanto
 che il timer non viene cancellato.
@@ -3809,7 +3809,7 @@ prototipi sono:
 
 Le due funzioni prendono come primo argomento la variabile su cui viene
 salvato il contesto dello \textit{stack} per permettere il salto non-locale;
-nel caso specifico essa è di tipo \type{sigjmp\_buf}, e non \type{jmp\_buf}
+nel caso specifico essa è di tipo \typed{sigjmp\_buf}, e non \type{jmp\_buf}
 come per le analoghe di sez.~\ref{sec:proc_longjmp} in quanto in questo caso
 viene salvata anche la maschera dei segnali.
 
index 5567f7c..91f41d4 100644 (file)
@@ -77,8 +77,8 @@ flusso di dati normale.
 
 Come già accennato in sez.~\ref{sec:file_multiplexing} la presenza di dati
 urgenti viene rilevata in maniera specifica sia di \func{select} (con il
-\itindex{file~descriptor~set} \textit{file descriptor set} \param{exceptfds})
-che da \func{poll} (con la condizione \const{POLLRDBAND}).
+\textit{file descriptor set} \param{exceptfds}) che da \func{poll} (con la
+condizione \const{POLLRDBAND}).
 
 
 Le modalità di lettura dei dati urgenti sono due, la prima e più comune
index 7c73bdd..edf5801 100644 (file)
@@ -4527,10 +4527,10 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
     avere abilitato l'opzione \texttt{CONFIG\_SYN\_COOKIES} nella compilazione
     del kernel.} Prende un valore logico, e di default è disabilitato. Questa
   funzionalità serve a fornire una protezione in caso di un attacco di tipo
-  \index{SYN~flood} \textit{SYN flood}, e deve essere utilizzato come ultima
-  risorsa dato che costituisce una violazione del protocollo TCP e confligge
-  con altre funzionalità come le estensioni e può causare problemi per i
-  client ed il reinoltro dei pacchetti.
+  \textit{SYN flood}, e deve essere utilizzato come ultima risorsa dato che
+  costituisce una violazione del protocollo TCP e confligge con altre
+  funzionalità come le estensioni e può causare problemi per i client ed il
+  reinoltro dei pacchetti.
 
 \item[\sysctlrelfile{net/ipv4}{tcp\_syn\_retries}] imposta il numero
   di tentativi di ritrasmissione dei pacchetti SYN di inizio connessione del
index 3c8dfa7..2287b17 100644 (file)
@@ -439,20 +439,20 @@ definita nell'include file \headfile{sys/socket.h}.
     \multicolumn{1}{|c|}{\textbf{Header}} \\
     \hline
     \hline
-    \type{int8\_t}   & intero a 8 bit con segno   & \headfile{sys/types.h}\\
-    \type{uint8\_t}  & intero a 8 bit senza segno & \headfile{sys/types.h}\\
-    \type{int16\_t}  & intero a 16 bit con segno  & \headfile{sys/types.h}\\
-    \type{uint16\_t} & intero a 16 bit senza segno& \headfile{sys/types.h}\\
-    \type{int32\_t}  & intero a 32 bit con segno  & \headfile{sys/types.h}\\
-    \type{uint32\_t} & intero a 32 bit senza segno& \headfile{sys/types.h}\\
+    \typed{int8\_t}   & intero a 8 bit con segno   & \headfile{sys/types.h}\\
+    \typed{uint8\_t}  & intero a 8 bit senza segno & \headfile{sys/types.h}\\
+    \typed{int16\_t}  & intero a 16 bit con segno  & \headfile{sys/types.h}\\
+    \typed{uint16\_t} & intero a 16 bit senza segno& \headfile{sys/types.h}\\
+    \typed{int32\_t}  & intero a 32 bit con segno  & \headfile{sys/types.h}\\
+    \typed{uint32\_t} & intero a 32 bit senza segno& \headfile{sys/types.h}\\
     \hline
-    \type{sa\_family\_t} & famiglia degli indirizzi&\headfile{sys/socket.h}\\
-    \type{socklen\_t} & lunghezza (\type{uint32\_t}) dell'indirizzo di
+    \typed{sa\_family\_t} & famiglia degli indirizzi&\headfile{sys/socket.h}\\
+    \typed{socklen\_t} & lunghezza (\type{uint32\_t}) dell'indirizzo di
     un socket& \headfile{sys/socket.h}\\
     \hline
-    \type{in\_addr\_t} & indirizzo IPv4 (\type{uint32\_t}) & 
+    \typed{in\_addr\_t} & indirizzo IPv4 (\type{uint32\_t}) & 
     \headfile{netinet/in.h}\\
-    \type{in\_port\_t} & porta TCP o UDP (\type{uint16\_t})& 
+    \typed{in\_port\_t} & porta TCP o UDP (\type{uint16\_t})& 
     \headfile{netinet/in.h}\\
     \hline
   \end{tabular}
index 9e6abaf..2b464a5 100644 (file)
@@ -77,23 +77,23 @@ tramite la funzione \func{sysconf} (che esamineremo a breve).
     \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\
     \hline
     \hline
-    \const{MB\_LEN\_MAX}&       16  & Massima dimensione di un 
-                                      carattere esteso.\\
-    \const{CHAR\_BIT} &          8  & Numero di bit di \ctyp{char}.\\
-    \const{UCHAR\_MAX}&        255  & Massimo di \ctyp{unsigned char}.\\
-    \const{SCHAR\_MIN}&       -128  & Minimo di \ctyp{signed char}.\\
-    \const{SCHAR\_MAX}&        127  & Massimo di \ctyp{signed char}.\\
-    \const{CHAR\_MIN} &   0 o -128  & Minimo di \ctyp{char}.\footnotemark\\
-    \const{CHAR\_MAX} &  127 o 255  & Massimo di \ctyp{char}.\footnotemark\\
-    \const{SHRT\_MIN} &     -32768  & Minimo di \ctyp{short}.\\
-    \const{SHRT\_MAX} &      32767  & Massimo di \ctyp{short}.\\
-    \const{USHRT\_MAX}&      65535  & Massimo di \ctyp{unsigned short}.\\
-    \const{INT\_MAX}  & 2147483647  & Minimo di \ctyp{int}.\\
-    \const{INT\_MIN}  &-2147483648  & Minimo di \ctyp{int}.\\
-    \const{UINT\_MAX} & 4294967295  & Massimo di \ctyp{unsigned int}.\\
-    \const{LONG\_MAX} & 2147483647  & Massimo di \ctyp{long}.\\
-    \const{LONG\_MIN} &-2147483648  & Minimo di \ctyp{long}.\\
-    \const{ULONG\_MAX}& 4294967295  & Massimo di \ctyp{unsigned long}.\\
+    \constd{MB\_LEN\_MAX}&       16  & Massima dimensione di un 
+                                       carattere esteso.\\
+    \constd{CHAR\_BIT} &          8  & Numero di bit di \ctyp{char}.\\
+    \constd{UCHAR\_MAX}&        255  & Massimo di \ctyp{unsigned char}.\\
+    \constd{SCHAR\_MIN}&       -128  & Minimo di \ctyp{signed char}.\\
+    \constd{SCHAR\_MAX}&        127  & Massimo di \ctyp{signed char}.\\
+    \constd{CHAR\_MIN} &   0 o -128  & Minimo di \ctyp{char}.\footnotemark\\
+    \constd{CHAR\_MAX} &  127 o 255  & Massimo di \ctyp{char}.\footnotemark\\
+    \constd{SHRT\_MIN} &     -32768  & Minimo di \ctyp{short}.\\
+    \constd{SHRT\_MAX} &      32767  & Massimo di \ctyp{short}.\\
+    \constd{USHRT\_MAX}&      65535  & Massimo di \ctyp{unsigned short}.\\
+    \constd{INT\_MAX}  & 2147483647  & Minimo di \ctyp{int}.\\
+    \constd{INT\_MIN}  &-2147483648  & Minimo di \ctyp{int}.\\
+    \constd{UINT\_MAX} & 4294967295  & Massimo di \ctyp{unsigned int}.\\
+    \constd{LONG\_MAX} & 2147483647  & Massimo di \ctyp{long}.\\
+    \constd{LONG\_MIN} &-2147483648  & Minimo di \ctyp{long}.\\
+    \constd{ULONG\_MAX}& 4294967295  & Massimo di \ctyp{unsigned long}.\\
     \hline                
   \end{tabular}
   \caption{Costanti definite in \headfile{limits.h} in conformità allo standard
@@ -123,10 +123,10 @@ accessibili includendo \headfiled{float.h}.
     \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\
     \hline
     \hline
-    \const{LLONG\_MAX}& 9223372036854775807& Massimo di \ctyp{long long}.\\
-    \const{LLONG\_MIN}&-9223372036854775808& Minimo di \ctyp{long long}.\\
-    \const{ULLONG\_MAX}&18446744073709551615&
-                                    Massimo di \ctyp{unsigned long long}.\\
+    \constd{LLONG\_MAX} & 9223372036854775807& Massimo di \ctyp{long long}.\\
+    \constd{LLONG\_MIN} &-9223372036854775808& Minimo di \ctyp{long long}.\\
+    \constd{ULLONG\_MAX}&18446744073709551615& Massimo di \ctyp{unsigned long
+                                               long}.\\ 
     \hline                
   \end{tabular}
   \caption{Macro definite in \headfile{limits.h} in conformità allo standard
@@ -134,7 +134,7 @@ accessibili includendo \headfiled{float.h}.
   \label{tab:sys_isoc90_macro}
 \end{table}
 
-Lo standard prevede anche un'altra costante, \const{FOPEN\_MAX}, che può non
+Lo standard prevede anche un'altra costante, \constd{FOPEN\_MAX}, che può non
 essere fissa e che pertanto non è definita in \headfile{limits.h}, essa deve
 essere definita in \headfile{stdio.h} ed avere un valore minimo di 8. A questi
 valori lo standard ISO C90 ne aggiunge altri tre, relativi al tipo \ctyp{long
@@ -156,21 +156,21 @@ sez.~\ref{sec:sys_file_limits}.
     \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\
     \hline
     \hline
-    \const{ARG\_MAX} &131072& Dimensione massima degli argomenti
-                              passati ad una funzione della famiglia
-                              \func{exec}.\\ 
-    \const{CHILD\_MAX} & 999& Numero massimo di processi contemporanei
-                              che un utente può eseguire.\\
-    \const{OPEN\_MAX}  & 256& Numero massimo di file che un processo
-                              può mantenere aperti in contemporanea.\\
-    \const{STREAM\_MAX}&   8& Massimo numero di stream aperti per
-                              processo in contemporanea.\\
-    \const{TZNAME\_MAX}&   6& Dimensione massima del nome di una
-                              \textit{timezone} (vedi
-                              sez.~\ref{sec:sys_time_base})).\\  
-    \const{NGROUPS\_MAX}& 32& Numero di gruppi supplementari per
-                              processo (vedi sez.~\ref{sec:proc_access_id}).\\
-    \const{SSIZE\_MAX}&32767& Valore massimo del tipo \type{ssize\_t}.\\
+    \constd{ARG\_MAX} &131072& Dimensione massima degli argomenti
+                               passati ad una funzione della famiglia
+                               \func{exec}.\\ 
+    \constd{CHILD\_MAX} & 999& Numero massimo di processi contemporanei
+                               che un utente può eseguire.\\
+    \constd{OPEN\_MAX}  & 256& Numero massimo di file che un processo
+                               può mantenere aperti in contemporanea.\\
+    \constd{STREAM\_MAX}&   8& Massimo numero di stream aperti per
+                               processo in contemporanea.\\
+    \constd{TZNAME\_MAX}&   6& Dimensione massima del nome di una
+                               \textit{timezone} (vedi
+                               sez.~\ref{sec:sys_time_base})).\\  
+    \constd{NGROUPS\_MAX}& 32& Numero di gruppi supplementari per
+                               processo (vedi sez.~\ref{sec:proc_access_id}).\\
+    \constd{SSIZE\_MAX}&32767& Valore massimo del tipo \type{ssize\_t}.\\
     \hline
   \end{tabular}
   \caption{Costanti per i limiti del sistema.}
@@ -192,27 +192,27 @@ file, riportate in tab.~\ref{tab:sys_file_macro}.
     \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\
     \hline
     \hline
-    \const{\_POSIX\_ARG\_MAX}    & 4096& Dimensione massima degli argomenti
+    \constd{\_POSIX\_ARG\_MAX}   & 4096& Dimensione massima degli argomenti
                                          passati ad una funzione della famiglia
                                          \func{exec}.\\ 
-    \const{\_POSIX\_CHILD\_MAX}  &    6& Numero massimo di processi
+    \constd{\_POSIX\_CHILD\_MAX} &    6& Numero massimo di processi
                                          contemporanei che un utente può 
                                          eseguire.\\
-    \const{\_POSIX\_OPEN\_MAX}   &   16& Numero massimo di file che un processo
+    \constd{\_POSIX\_OPEN\_MAX}  &   16& Numero massimo di file che un processo
                                          può mantenere aperti in 
                                          contemporanea.\\
-    \const{\_POSIX\_STREAM\_MAX} &    8& Massimo numero di stream aperti per
+    \constd{\_POSIX\_STREAM\_MAX}&    8& Massimo numero di stream aperti per
                                          processo in contemporanea.\\
-    \const{\_POSIX\_TZNAME\_MAX} &    6& Dimensione massima del nome di una
+    \constd{\_POSIX\_TZNAME\_MAX}&    6& Dimensione massima del nome di una
                                          \textit{timezone}
                                          (vedi sez.~\ref{sec:sys_date}). \\ 
-    \const{\_POSIX\_RTSIG\_MAX}  &    8& Numero massimo di segnali
+    \constd{\_POSIX\_RTSIG\_MAX} &    8& Numero massimo di segnali
                                          \textit{real-time} (vedi
                                          sez.~\ref{sec:sig_real_time}).\\
-    \const{\_POSIX\_NGROUPS\_MAX}&    0& Numero di gruppi supplementari per
+    \constd{\_POSIX\_NGROUPS\_MAX}&   0& Numero di gruppi supplementari per
                                          processo (vedi 
                                          sez.~\ref{sec:proc_access_id}).\\
-    \const{\_POSIX\_SSIZE\_MAX}  &32767& Valore massimo del tipo 
+    \constd{\_POSIX\_SSIZE\_MAX} &32767& Valore massimo del tipo 
                                          \type{ssize\_t}.\\
     % \const{\_POSIX\_AIO\_LISTIO\_MAX}&2& \\
     % \const{\_POSIX\_AIO\_MAX}    &    1& \\
@@ -252,16 +252,16 @@ valori ottenuti da \func{sysconf}.
     \textbf{Macro}&\textbf{Significato}\\
     \hline
     \hline
-    \macro{\_POSIX\_JOB\_CONTROL}& Il sistema supporta il 
-                                   \textit{job control} (vedi 
-                                   sez.~\ref{sec:sess_job_control}).\\
-    \macro{\_POSIX\_SAVED\_IDS}  & Il sistema supporta gli identificatori del 
-                                   gruppo \textit{saved} (vedi 
-                                   sez.~\ref{sec:proc_access_id})
-                                   per il controllo di accesso dei processi.\\
-    \const{\_POSIX\_VERSION}     & Fornisce la versione dello standard POSIX.1
-                                   supportata nel formato YYYYMML (ad esempio 
-                                   199009L).\\
+    \macrod{\_POSIX\_JOB\_CONTROL}& Il sistema supporta il 
+                                    \textit{job control} (vedi 
+                                    sez.~\ref{sec:sess_job_control}).\\
+    \macrod{\_POSIX\_SAVED\_IDS}  & Il sistema supporta gli identificatori del 
+                                    gruppo \textit{saved} (vedi 
+                                    sez.~\ref{sec:proc_access_id})
+                                    per il controllo di accesso dei processi.\\
+    \macrod{\_POSIX\_VERSION}     & Fornisce la versione dello standard POSIX.1
+                                    supportata nel formato YYYYMML (ad esempio 
+                                    199009L).\\
     \hline
   \end{tabular}
   \caption{Alcune macro definite in \headfile{limits.h} in conformità allo
@@ -270,7 +270,7 @@ valori ottenuti da \func{sysconf}.
 \end{table}
 
 Oltre ai precedenti valori e a quelli relativi ai file elencati in
-tab.~\ref{tab:sys_posix1_file},, che devono essere obbligatoriamente definiti,
+tab.~\ref{tab:sys_posix1_file}, che devono essere obbligatoriamente definiti,
 lo standard POSIX.1 ne prevede molti altri. La lista completa si trova
 dall'header file \file{bits/posix1\_lim.h}, da non usare mai direttamente (è
 incluso automaticamente all'interno di \headfile{limits.h}). Di questi vale la
@@ -330,8 +330,8 @@ relative spiegazioni, si può trovare nel manuale delle \acr{glibc}.
       \texttt{\_SC\_STREAM\_MAX}& \const{STREAM\_MAX}&
                                   Il massimo numero di stream che un processo
                                   può mantenere aperti in contemporanea. Questo
-                                  limite previsto anche dallo standard ANSI C,
-                                  che specifica la macro {FOPEN\_MAX}.\\
+                                  limite è previsto anche dallo standard ANSI C,
+                                  che specifica la macro \const{FOPEN\_MAX}.\\
       \texttt{\_SC\_TZNAME\_MAX}& \const{TZNAME\_MAX}&
                                   La dimensione massima di un nome di una
                                   \texttt{timezone} (vedi
@@ -404,14 +404,14 @@ riportate in tab.~\ref{tab:sys_file_macro}.
     \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\
     \hline
     \hline                
-    \const{LINK\_MAX}   &8  & Numero massimo di link a un file.\\
-    \const{NAME\_MAX}&  14  & Lunghezza in byte di un nome di file. \\
-    \const{PATH\_MAX}& 256  & Lunghezza in byte di un \textit{pathname}.\\
-    \const{PIPE\_BUF}&4096  & Byte scrivibili atomicamente in una \textit{pipe}
+    \constd{LINK\_MAX}   &8 & Numero massimo di link a un file.\\
+    \constd{NAME\_MAX}&  14 & Lunghezza in byte di un nome di file. \\
+    \constd{PATH\_MAX}& 256 & Lunghezza in byte di un \textit{pathname}.\\
+    \constd{PIPE\_BUF}&4096 & Byte scrivibili atomicamente in una \textit{pipe}
                               (vedi sez.~\ref{sec:ipc_pipes}).\\
-    \const{MAX\_CANON}&255  & Dimensione di una riga di terminale in modo 
+    \constd{MAX\_CANON}&255 & Dimensione di una riga di terminale in modo 
                               canonico (vedi sez.~\ref{sec:term_io_design}).\\
-    \const{MAX\_INPUT}&255  & Spazio disponibile nella coda di input 
+    \constd{MAX\_INPUT}&255 & Spazio disponibile nella coda di input 
                               del terminale (vedi 
                               sez.~\ref{sec:term_io_design}).\\
     \hline                
@@ -434,20 +434,20 @@ analoghe di tab.~\ref{tab:sys_posix1_general}.
     \textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\
     \hline
     \hline
-    \const{\_POSIX\_LINK\_MAX}   &8  & Numero massimo di link a un file.\\
-    \const{\_POSIX\_NAME\_MAX}&  14  & Lunghezza in byte di un nome di file.\\
-    \const{\_POSIX\_PATH\_MAX}& 256  & Lunghezza in byte di un 
+    \macrod{\_POSIX\_LINK\_MAX}   &8 & Numero massimo di link a un file.\\
+    \macrod{\_POSIX\_NAME\_MAX}&  14 & Lunghezza in byte di un nome di file.\\
+    \macrod{\_POSIX\_PATH\_MAX}& 256 & Lunghezza in byte di un 
                                        \textit{pathname}.\\
-    \const{\_POSIX\_PIPE\_BUF}& 512  & Byte scrivibili atomicamente in una
+    \macrod{\_POSIX\_PIPE\_BUF}& 512 & Byte scrivibili atomicamente in una
                                        \textit{pipe}.\\
-    \const{\_POSIX\_MAX\_CANON}&255  & Dimensione di una riga di
+    \macrod{\_POSIX\_MAX\_CANON}&255 & Dimensione di una riga di
                                        terminale in modo canonico.\\
-    \const{\_POSIX\_MAX\_INPUT}&255  & Spazio disponibile nella coda di input 
+    \macrod{\_POSIX\_MAX\_INPUT}&255 & Spazio disponibile nella coda di input 
                                        del terminale.\\
-%    \const{\_POSIX\_MQ\_OPEN\_MAX}&  8& \\
-%    \const{\_POSIX\_MQ\_PRIO\_MAX}& 32& \\
-%    \const{\_POSIX\_FD\_SETSIZE}& 16 & \\
-%    \const{\_POSIX\_DELAYTIMER\_MAX}& 32 & \\
+%    \macrod{\_POSIX\_MQ\_OPEN\_MAX}&  8& \\
+%    \macrod{\_POSIX\_MQ\_PRIO\_MAX}& 32& \\
+%    \macrod{\_POSIX\_FD\_SETSIZE}& 16 & \\
+%    \macrod{\_POSIX\_DELAYTIMER\_MAX}& 32 & \\
     \hline
   \end{tabular}
   \caption{Costanti dei valori minimi delle caratteristiche dei file per la
@@ -627,10 +627,10 @@ dall'argomento \param{info}.
 
 Si noti come in fig.~\ref{fig:sys_utsname} le dimensioni delle stringhe di
 \struct{utsname} non sono specificate.  Il manuale delle \acr{glibc} indica
-due costanti per queste dimensioni, \const{\_UTSNAME\_LENGTH} per i campi
-standard e \const{\_UTSNAME\_DOMAIN\_LENGTH} per quello relativo al nome di
-dominio, altri sistemi usano nomi diversi come \const{SYS\_NMLN} o
-\const{\_SYS\_NMLN} o \const{UTSLEN} che possono avere valori diversi. Dato
+due costanti per queste dimensioni, \constd{\_UTSNAME\_LENGTH} per i campi
+standard e \constd{\_UTSNAME\_DOMAIN\_LENGTH} per quello relativo al nome di
+dominio, altri sistemi usano nomi diversi come \constd{SYS\_NMLN} o
+\constd{\_SYS\_NMLN} o \constd{UTSLEN} che possono avere valori diversi. Dato
 che il buffer per \struct{utsname} deve essere preallocato l'unico modo per
 farlo in maniera sicura è allora usare come dimensione il valore ottenuto con
 \code{sizeof(utsname)}.
@@ -1004,10 +1004,10 @@ altri valori di default per i \textit{pathname} di uso più comune, viene
 mantenuto nei valori di una serie di costanti definite includendo
 \headfiled{paths.h}, in particolare quelle che ci interessano sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\const{\_PATH\_UTMP}] specifica il file che contiene il registro per gli
-  utenti correntemente collegati, questo è il valore che viene usato se non si
-  è utilizzato \func{utmpname} per modificarlo;
-\item[\const{\_PATH\_WTMP}] specifica il file che contiene il registro per
+\item[\constd{\_PATH\_UTMP}] specifica il file che contiene il registro per
+  gli utenti correntemente collegati, questo è il valore che viene usato se
+  non si è utilizzato \func{utmpname} per modificarlo;
+\item[\constd{\_PATH\_WTMP}] specifica il file che contiene il registro per
   l'archivio storico degli utenti collegati;
 \end{basedescript}
 che nel caso di Linux hanno un valore corrispondente ai file
@@ -1075,18 +1075,18 @@ corrispondente al valore del campo \var{ut\_id} specificato in \param{ut}.
     \textbf{Valore} & \textbf{Significato}\\
     \hline
     \hline
-    \const{EMPTY}         & Non contiene informazioni valide.\\
-    \const{RUN\_LVL}      & Identica il runlevel del sistema.\\
-    \const{BOOT\_TIME}    & Identifica il tempo di avvio del sistema.\\
-    \const{OLD\_TIME}     & Identifica quando è stato modificato l'orologio di
-                            sistema.\\
-    \const{NEW\_TIME}     & Identifica da quanto è stato modificato il 
-                            sistema.\\
-    \const{INIT\_PROCESS} & Identifica un processo lanciato da \cmd{init}.\\
-    \const{LOGIN\_PROCESS}& Identifica un processo di login.\\
-    \const{USER\_PROCESS} & Identifica un processo utente.\\
-    \const{DEAD\_PROCESS} & Identifica un processo terminato.\\
-%    \const{ACCOUNTING}    & ??? \\
+    \constd{EMPTY}         & Non contiene informazioni valide.\\
+    \constd{RUN\_LVL}      & Identica il runlevel del sistema.\\
+    \constd{BOOT\_TIME}    & Identifica il tempo di avvio del sistema.\\
+    \constd{OLD\_TIME}     & Identifica quando è stato modificato l'orologio di
+                             sistema.\\
+    \constd{NEW\_TIME}     & Identifica da quanto è stato modificato il 
+                             sistema.\\
+    \constd{INIT\_PROCESS} & Identifica un processo lanciato da \cmd{init}.\\
+    \constd{LOGIN\_PROCESS}& Identifica un processo di login.\\
+    \constd{USER\_PROCESS} & Identifica un processo utente.\\
+    \constd{DEAD\_PROCESS} & Identifica un processo terminato.\\
+%    \constd{ACCOUNTING}    & ??? \\
     \hline
   \end{tabular}
   \caption{Classificazione delle voci del registro a seconda dei
@@ -1239,21 +1239,21 @@ e deve assumere indicato con una delle costanti seguente elenco, che
 illustra i comandi attualmente disponibili:
 
 \begin{basedescript}{\desclabelwidth{2.cm}\desclabelstyle{\nextlinelabel}}
-\item[\const{LINUX\_REBOOT\_CMD\_CAD\_OFF}] Disabilita l'uso diretto della
+\item[\constd{LINUX\_REBOOT\_CMD\_CAD\_OFF}] Disabilita l'uso diretto della
   combinazione \texttt{Ctrl-Alt-Del}, la cui pressione si traduce nell'invio
-  del segnale \const{SIGINT} a \texttt{init} (o più in generale al processo
+  del segnale \signal{SIGINT} a \texttt{init} (o più in generale al processo
   con \ids{PID} 1) il cui effetto dipende dalla configurazione di
   quest'ultimo.
-\item[\const{LINUX\_REBOOT\_CMD\_CAD\_ON}] Attiva l'uso diretto della
+\item[\constd{LINUX\_REBOOT\_CMD\_CAD\_ON}] Attiva l'uso diretto della
   combinazione \texttt{Ctrl-Alt-Del}, la cui pressione si traduce
   nell'esecuzione dell'azione che si avrebbe avuto chiamando \func{reboot} con
   il comando \const{LINUX\_REBOOT\_CMD\_RESTART}.
-\item[\const{LINUX\_REBOOT\_CMD\_HALT}] Viene inviato sulla console il
+\item[\constd{LINUX\_REBOOT\_CMD\_HALT}] Viene inviato sulla console il
   messaggio ``\textit{System halted.}'' l'esecuzione viene bloccata
   immediatamente ed il controllo passato al monitor nella ROM (se esiste e
   l'architettura lo consente). Se non si è eseguita una sincronizzazione dei
   dati su disco con \func{sync} questi saranno perduti.
-\item[\const{LINUX\_REBOOT\_CMD\_KEXEC}] viene eseguito direttamente il nuovo
+\item[\constd{LINUX\_REBOOT\_CMD\_KEXEC}] viene eseguito direttamente il nuovo
   kernel che è stato opportunamente caricato in memoria da una
   \func{kexec\_load} (che tratteremo a breve) eseguita in precedenza. La
   funzionalità è disponibile solo a partire dal kernel 2.6.13 e se il kernel
@@ -1263,16 +1263,16 @@ illustra i comandi attualmente disponibili:
   di dover ripassare dalla inizializzazione da parte del BIOS ed il lancio del
   kernel attraverso un bootloader. Se non si è eseguita una sincronizzazione
   dei dati su disco con \func{sync} questi saranno perduti.
-\item[\const{LINUX\_REBOOT\_CMD\_POWER\_OFF}] Viene inviato sulla console il
+\item[\constd{LINUX\_REBOOT\_CMD\_POWER\_OFF}] Viene inviato sulla console il
   messaggio ``\textit{Power down.}'' l'esecuzione viene bloccata
   immediatamente e la macchina, se possibile, viene spenta.  Se non si è
   eseguita una sincronizzazione dei dati su disco con \func{sync} questi
   saranno perduti.
-\item[\const{LINUX\_REBOOT\_CMD\_RESTART}] Viene inviato sulla console il
+\item[\constd{LINUX\_REBOOT\_CMD\_RESTART}] Viene inviato sulla console il
   messaggio ``\textit{Restarting system.}'' ed avviata immediatamente la
   procedura di riavvio ordinaria. Se non si è eseguita una sincronizzazione
   dei dati su disco con \func{sync} questi saranno perduti.
-\item[\const{LINUX\_REBOOT\_CMD\_RESTART2}] Viene inviato sulla console il
+\item[\constd{LINUX\_REBOOT\_CMD\_RESTART2}] Viene inviato sulla console il
   messaggio ``\textit{Restarting system with command '\%s'.}'' ed avviata
   immediatamente la procedura di riavvio usando il comando fornito
   nell'argomento \param{arg} che viene stampato al posto di \textit{'\%s'}
@@ -1355,10 +1355,10 @@ che sia effettivamente eseguibile sul proprio processore.
     \textbf{Valore} & \textbf{Significato}\\
     \hline
     \hline
-    \const{KEXEC\_ON\_CRASH}        & Il kernel caricato sarà eseguito
+    \constd{KEXEC\_ON\_CRASH}        & Il kernel caricato sarà eseguito
                                       automaticamente in caso di crollo del
                                       sistema.\\
-    \const{KEXEC\_PRESERVE\_CONTEXT}& Viene preservato lo stato dei programmi 
+    \constd{KEXEC\_PRESERVE\_CONTEXT}& Viene preservato lo stato dei programmi 
                                       e dei dispositivi prima dell'esecuzione
                                       del nuovo kernel. Viene usato
                                       principalmente per l'ibernazione del
@@ -1366,7 +1366,7 @@ che sia effettivamente eseguibile sul proprio processore.
                                       indicato un numero di segmento maggiore
                                       di zero.\\
     \hline
-    \const{KEXEC\_ARCH\_DEFAULT}    & Il kernel caricato verrà eseguito nella
+    \constd{KEXEC\_ARCH\_DEFAULT}    & Il kernel caricato verrà eseguito nella
                                       architettura corrente. \\
     \texttt{KEXEC\_ARCH\_XXX}       & Il kernel caricato verrà eseguito nella
                                       architettura indicata (con \texttt{XXX}
@@ -1506,16 +1506,16 @@ recepita nello standard POSIX.1-2001, che però indica come campi di
     \textbf{Valore} & \textbf{Significato}\\
     \hline
     \hline
-    \const{RUSAGE\_SELF}     & Ritorna l'uso delle risorse del processo
+    \constd{RUSAGE\_SELF}     & Ritorna l'uso delle risorse del processo
                                corrente, che in caso di uso dei
                                \textit{thread} ammonta alla somma delle 
                                risorse utilizzate da tutti i \textit{thread}
                                del processo.\\ 
-    \const{RUSAGE\_CHILDREN} & Ritorna l'uso delle risorse dell'insieme dei
+    \constd{RUSAGE\_CHILDREN} & Ritorna l'uso delle risorse dell'insieme dei
                                processi figli di cui è ricevuto lo stato di
                                terminazione, che a loro volta comprendono
                                quelle dei loro figli e così via.\\ 
-    \const{RUSAGE\_THREAD}   & Ritorna l'uso delle risorse del \textit{thread}
+    \constd{RUSAGE\_THREAD}   & Ritorna l'uso delle risorse del \textit{thread}
                                chiamante.\\ 
     \hline
   \end{tabular}
@@ -1555,7 +1555,7 @@ Si tenga conto che per un errore di implementazione nei i kernel precedenti il
 2.6.9, nonostante questo fosse esplicitamente proibito dallo standard POSIX.1,
 l'uso di \const{RUSAGE\_CHILDREN} comportava l'inserimento dell'ammontare
 delle risorse usate dai processi figli anche quando si era impostata una
-azione di \const{SIG\_IGN} per il segnale \const{SIGCHLD} (per i segnali si
+azione di \const{SIG\_IGN} per il segnale \signal{SIGCHLD} (per i segnali si
 veda cap.~\ref{cha:signals}). Il comportamento è stato corretto per aderire
 allo standard a partire dal kernel 2.6.9.
 
@@ -1651,7 +1651,7 @@ rispettivi limiti e gli effetti causati dal superamento degli stessi sono
 riportati nel seguente elenco:
 
 \begin{basedescript}{\desclabelwidth{2.2cm}}%\desclabelstyle{\nextlinelabel}}
-\item[\const{RLIMIT\_AS}] Questa risorsa indica, in byte, la dimensione
+\item[\constd{RLIMIT\_AS}] Questa risorsa indica, in byte, la dimensione
   massima consentita per la memoria virtuale di un processo, il cosiddetto
   \textit{Address Space}, (vedi sez.~\ref{sec:proc_mem_gen}). Se il limite
   viene superato dall'uso di funzioni come \func{brk}, \func{mremap} o
@@ -1663,13 +1663,13 @@ riportati nel seguente elenco:
   in tal caso il limite massimo indicabile resta 2Gb, altrimenti la risorsa si
   dà per non limitata.
 
-\item[\const{RLIMIT\_CORE}] Questa risorsa indica, in byte, la massima
+\item[\constd{RLIMIT\_CORE}] Questa risorsa indica, in byte, la massima
   dimensione per un file di \textit{core dump} (vedi
   sez.~\ref{sec:sig_standard}) creato nella terminazione di un processo. File
   di dimensioni maggiori verranno troncati a questo valore, mentre con un
   valore nullo si bloccherà la creazione dei \textit{core dump}.
 
-\item[\const{RLIMIT\_CPU}] Questa risorsa indica, in secondi, il massimo tempo
+\item[\constd{RLIMIT\_CPU}] Questa risorsa indica, in secondi, il massimo tempo
   di CPU (vedi sez.~\ref{sec:sys_cpu_times}) che il processo può usare. Il
   superamento del limite corrente comporta l'emissione di un segnale di
   \signal{SIGXCPU}, la cui azione predefinita (vedi
@@ -1684,27 +1684,27 @@ riportati nel seguente elenco:
   intercettare sempre \signal{SIGXCPU} e terminare in maniera ordinata il
   processo con la prima ricezione.
 
-\item[\const{RLIMIT\_DATA}] Questa risorsa indica, in byte, la massima
+\item[\constd{RLIMIT\_DATA}] Questa risorsa indica, in byte, la massima
   dimensione del segmento dati di un processo (vedi
   sez.~\ref{sec:proc_mem_layout}).  Il tentativo di allocare più memoria di
   quanto indicato dal limite corrente causa il fallimento della funzione di
   allocazione eseguita (\func{brk} o \func{sbrk}) con un errore di
   \errcode{ENOMEM}.
 
-\item[\const{RLIMIT\_FSIZE}] Questa risorsa indica, in byte, la massima
+\item[\constd{RLIMIT\_FSIZE}] Questa risorsa indica, in byte, la massima
   dimensione di un file che un processo può usare. Se il processo cerca di
   scrivere o di estendere il file oltre questa dimensione riceverà un segnale
   di \signal{SIGXFSZ}, che di norma termina il processo. Se questo segnale
   viene intercettato la \textit{system call} che ha causato l'errore fallirà
   con un errore di \errcode{EFBIG}.
 
-\item[\const{RLIMIT\_LOCKS}] Questa risorsa indica il numero massimo di
+\item[\constd{RLIMIT\_LOCKS}] Questa risorsa indica il numero massimo di
   \textit{file lock} (vedi sez.~\ref{sec:file_locking}) e di \textit{file
     lease} (vedi sez.~\ref{sec:file_asyncronous_lease}) che un processo poteva
   effettuare.  È un limite presente solo nelle prime versioni del kernel 2.4,
   pertanto non deve essere più utilizzato.
 
-\item[\const{RLIMIT\_MEMLOCK}] Questa risorsa indica, in byte, l'ammontare
+\item[\constd{RLIMIT\_MEMLOCK}] Questa risorsa indica, in byte, l'ammontare
   massimo di memoria che può essere bloccata in RAM da un processo (vedi
   sez.~\ref{sec:proc_mem_lock}). Dato che il \textit{memory locking} viene
   effettuato sulle pagine di memoria, il valore indicato viene automaticamente
@@ -1723,7 +1723,7 @@ riportati nel seguente elenco:
   la semantica della risorsa cambiata.
 
 
-\item[\const{RLIMIT\_MSGQUEUE}] Questa risorsa indica il numero massimo di
+\item[\constd{RLIMIT\_MSGQUEUE}] Questa risorsa indica il numero massimo di
   byte che possono essere utilizzati da un utente, identificato con
   l'\ids{UID} reale del processo chiamante, per le code di messaggi POSIX
   (vedi sez.~\ref{sec:ipc_posix_mq}). Per ciascuna coda che viene creata viene
@@ -1735,25 +1735,25 @@ consente di evitare la creazione di una coda con un numero illimitato di
 messaggi vuoti che comunque richiede delle risorse di gestione. Questa risorsa
 è stata introdotta con il kernel 2.6.8.
 
-\item[\const{RLIMIT\_NICE}] Questa risorsa indica il numero massimo a cui può
+\item[\constd{RLIMIT\_NICE}] Questa risorsa indica il numero massimo a cui può
   essere il portato il valore di \textit{nice} (vedi
   sez.~\ref{sec:proc_sched_stand}). Dato che non possono essere usati numeri
   negativi per specificare un limite, il valore di \textit{nice} viene
   calcolato come \code{20-rlim\_cur}. Questa risorsa è stata introdotta con il
   kernel 2.6.12.
 
-\item[\const{RLIMIT\_NOFILE}] Questa risorsa indica il numero massimo di file
+\item[\constd{RLIMIT\_NOFILE}] Questa risorsa indica il numero massimo di file
   che un processo può aprire. Il tentativo di creazione di un ulteriore file
   descriptor farà fallire la funzione (\func{open}, \func{dup}, \func{pipe},
   ecc.) con un errore \errcode{EMFILE}.
 
-\item[\const{RLIMIT\_NPROC}] Questa risorsa indica il numero massimo di
+\item[\constd{RLIMIT\_NPROC}] Questa risorsa indica il numero massimo di
   processi che possono essere creati dallo stesso utente, che viene
   identificato con l'\ids{UID} reale (vedi sez.~\ref{sec:proc_access_id}) del
   processo chiamante. Se il limite viene raggiunto \func{fork} fallirà con un
   \errcode{EAGAIN}.
 
-\item[\const{RLIMIT\_RSS}] Questa risorsa indica, in pagine di memoria, la
+\item[\constd{RLIMIT\_RSS}] Questa risorsa indica, in pagine di memoria, la
   dimensione massima della memoria residente (il cosiddetto RSS
   \itindex{Resident~Set~Size~(RSS)} \textit{Resident Set Size}) cioè
   l'ammontare della memoria associata al processo che risiede effettivamente
@@ -1763,7 +1763,7 @@ messaggi vuoti che comunque richiede delle risorse di gestione. Questa risorsa
   sez.~\ref{sec:file_memory_map}). Presente solo sui i kernel precedenti il
   2.4.30.
 
-\item[\const{RLIMIT\_RTPRIO}] Questa risorsa indica il valore massimo della
+\item[\constd{RLIMIT\_RTPRIO}] Questa risorsa indica il valore massimo della
   priorità statica che un processo può assegnarsi o assegnare con
   \func{sched\_setscheduler} e \func{sched\_setparam} (vedi
   sez.~\ref{sec:proc_real_time}). Il limite è stato introdotto a partire dal
@@ -1772,7 +1772,7 @@ messaggi vuoti che comunque richiede delle risorse di gestione. Questa risorsa
   priorità statica ed utilizzare una politica di \textit{scheduling} di tipo
   \textit{real-time}.
 
-\item[\const{RLIMIT\_RTTIME}] Questa risorsa indica, in microsecondi, il tempo
+\item[\constd{RLIMIT\_RTTIME}] Questa risorsa indica, in microsecondi, il tempo
   massimo di CPU che un processo eseguito con una priorità statica può
   consumare. Il superamento del limite corrente comporta l'emissione di un
   segnale di \signal{SIGXCPU}, e quello del limite massimo di \signal{SIGKILL}
@@ -1782,7 +1782,7 @@ messaggi vuoti che comunque richiede delle risorse di gestione. Questa risorsa
   kernel 2.6.25 per impedire che un processo \textit{real-time} possa bloccare
   il sistema.
 
-\item[\const{RLIMIT\_SIGPENDING}] Questa risorsa indica il numero massimo di
+\item[\constd{RLIMIT\_SIGPENDING}] Questa risorsa indica il numero massimo di
   segnali che possono essere mantenuti in coda per ciascun utente,
   identificato per \ids{UID} reale. Il limite comprende sia i segnali normali
   che quelli \textit{real-time} (vedi sez.~\ref{sec:sig_real_time}) ed è
@@ -1790,7 +1790,7 @@ messaggi vuoti che comunque richiede delle risorse di gestione. Questa risorsa
   segnale che non sia già presente su una coda. Questo limite è stato
   introdotto con il kernel 2.6.8.
 
-\item[\const{RLIMIT\_STACK}] Questa risorsa indica, in byte, la massima
+\item[\constd{RLIMIT\_STACK}] Questa risorsa indica, in byte, la massima
   dimensione dello \textit{stack} del processo. Se il processo esegue
   operazioni che estendano lo \textit{stack} oltre questa dimensione riceverà
   un segnale di \signal{SIGSEGV}.
@@ -2139,9 +2139,9 @@ comando \cmd{time}.
 Come accennato il \textit{process time} viene misurato nei cosiddetti
 \textit{clock tick}. Un tempo questo corrispondeva al numero di interruzioni
 effettuate dal timer di sistema, oggi lo standard POSIX richiede che esso sia
-espresso come multiplo della costante \const{CLOCKS\_PER\_SEC} che deve essere
-definita come 1000000, qualunque sia la risoluzione reale dell'orologio di
-sistema e la frequenza delle interruzioni del timer che, come accennato in
+espresso come multiplo della costante \constd{CLOCKS\_PER\_SEC} che deve
+essere definita come 1000000, qualunque sia la risoluzione reale dell'orologio
+di sistema e la frequenza delle interruzioni del timer che, come accennato in
 sez.~\ref{sec:proc_hierarchy} e come vedremo a breve, è invece data dalla
 costante \const{HZ}.
 
@@ -2287,7 +2287,7 @@ così via per i relativi ``\textsl{discendenti}''.
 
 Come accennato in sez.~\ref{sec:sys_resource_use} per i kernel precedenti la
 versione 2.6.9 il tempo di processore dei processi figli veniva sommato
-comunque chiedendo di ignorare \const{SIGCHLD} anche se lo standard POSIX
+comunque chiedendo di ignorare \signal{SIGCHLD} anche se lo standard POSIX
 richiede esplicitamente che questo avvenga solo quando si riceve lo stato di
 uscita con una funzione della famiglia delle \func{wait}, anche in questo caso
 il comportamento è stato adeguato allo standard a partire dalla versione
@@ -2513,12 +2513,12 @@ delle costanti elencate in tab.~\ref{tab:adjtimex_return}.
     \textbf{Nome} & \textbf{Valore} & \textbf{Significato}\\
     \hline
     \hline
-    \const{TIME\_OK}   & 0 & Orologio sincronizzato.\\ 
-    \const{TIME\_INS}  & 1 & Inserimento di un \textit{leap second}.\\ 
-    \const{TIME\_DEL}  & 2 & Cancellazione di un \textit{leap second}.\\ 
-    \const{TIME\_OOP}  & 3 & \textit{leap second} in corso.\\ 
-    \const{TIME\_WAIT} & 4 & \textit{leap second} avvenuto.\\ 
-    \const{TIME\_BAD}  & 5 & Orologio non sincronizzato.\\ 
+    \constd{TIME\_OK}   & 0 & Orologio sincronizzato.\\ 
+    \constd{TIME\_INS}  & 1 & Inserimento di un \textit{leap second}.\\ 
+    \constd{TIME\_DEL}  & 2 & Cancellazione di un \textit{leap second}.\\ 
+    \constd{TIME\_OOP}  & 3 & \textit{leap second} in corso.\\ 
+    \constd{TIME\_WAIT} & 4 & \textit{leap second} avvenuto.\\ 
+    \constd{TIME\_BAD}  & 5 & Orologio non sincronizzato.\\ 
     \hline
   \end{tabular}
   \caption{Possibili valori ritornati da \func{adjtimex} in caso di successo.} 
@@ -2558,38 +2558,38 @@ riportate in tab.~\ref{tab:sys_timex_mode}.
     \textbf{Nome} & \textbf{Valore} & \textbf{Significato}\\
     \hline
     \hline
-    \const{ADJ\_OFFSET}         & 0x0001 & Imposta la differenza fra il tempo
+    \constd{ADJ\_OFFSET}        & 0x0001 & Imposta la differenza fra il tempo
                                            reale e l'orologio di sistema: 
                                            deve essere indicata in microsecondi
                                            nel campo \var{offset} di
                                            \struct{timex}.\\ 
-    \const{ADJ\_FREQUENCY}      & 0x0002 & Imposta la differenza in frequenza
+    \constd{ADJ\_FREQUENCY}     & 0x0002 & Imposta la differenza in frequenza
                                            fra il tempo reale e l'orologio di
                                            sistema: deve essere indicata
                                            in parti per milione nel campo
                                            \var{frequency} di \struct{timex}.\\
-    \const{ADJ\_MAXERROR}       & 0x0004 & Imposta il valore massimo 
+    \constd{ADJ\_MAXERROR}      & 0x0004 & Imposta il valore massimo 
                                            dell'errore sul tempo, espresso in
                                            microsecondi nel campo
                                            \var{maxerror} di \struct{timex}.\\ 
-    \const{ADJ\_ESTERROR}       & 0x0008 & Imposta la stima dell'errore
+    \constd{ADJ\_ESTERROR}      & 0x0008 & Imposta la stima dell'errore
                                            sul tempo, espresso in microsecondi 
                                            nel campo \var{esterror} di
                                            \struct{timex}.\\
-    \const{ADJ\_STATUS}         & 0x0010 & Imposta alcuni valori di stato
+    \constd{ADJ\_STATUS}        & 0x0010 & Imposta alcuni valori di stato
                                            interni usati dal 
                                            sistema nella gestione
                                            dell'orologio specificati nel campo
                                            \var{status} di \struct{timex}.\\ 
-    \const{ADJ\_TIMECONST}      & 0x0020 & Imposta la larghezza di banda del 
+    \constd{ADJ\_TIMECONST}     & 0x0020 & Imposta la larghezza di banda del 
                                            PLL implementato dal kernel,
                                            specificato nel campo
                                            \var{constant} di \struct{timex}.\\ 
-    \const{ADJ\_TICK}           & 0x4000 & Imposta il valore dei \textit{tick}
+    \constd{ADJ\_TICK}          & 0x4000 & Imposta il valore dei \textit{tick}
                                            del timer in
                                            microsecondi, espresso nel campo
                                            \var{tick} di \struct{timex}.\\  
-    \const{ADJ\_OFFSET\_SINGLESHOT}&0x8001&Chiede uno spostamento una tantum 
+    \constd{ADJ\_OFFSET\_SINGLESHOT}&0x8001&Chiede uno spostamento una tantum 
                                            dell'orologio secondo il valore del
                                            campo \var{offset} simulando il
                                            comportamento di \func{adjtime}.\\ 
index e1390a1..32075ed 100644 (file)
@@ -1,4 +1,4 @@
-%% tcpsock.tex
+bg%% tcpsock.tex
 %%
 %% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
@@ -958,9 +958,9 @@ kernel, compreso Linux 2.0, che mostrano le differenze fra diverse
 implementazioni.
 
 In Linux il significato di questo valore è cambiato a partire dal kernel 2.2
-per prevenire l'attacco chiamato \index{SYN~flood} \textit{SYN flood}. Questo
-si basa sull'emissione da parte dell'attaccante di un grande numero di
-pacchetti SYN indirizzati verso una porta, forgiati con indirizzo IP
+per prevenire l'attacco chiamato \itindex{SYN~flood} \textit{SYN
+  flood}. Questo si basa sull'emissione da parte dell'attaccante di un grande
+numero di pacchetti SYN indirizzati verso una porta, forgiati con indirizzo IP
 fasullo\footnote{con la tecnica che viene detta \textit{ip spoofing}.} così
 che i SYN$+$ACK vanno perduti e la coda delle connessioni incomplete viene
 saturata, impedendo di fatto ulteriori connessioni.
@@ -2776,8 +2776,7 @@ nel caso dei socket, visto che possono intervenire tutte una serie di
 possibili condizioni di errore dovute alla rete. Occorre allora specificare
 chiaramente quali sono le condizioni per cui un socket risulta essere
 ``\textsl{pronto}'' quando viene passato come membro di uno dei tre
-\itindex{file~descriptor~set} \textit{file descriptor set} usati da
-\func{select}.
+\textit{file descriptor set} usati da \func{select}.
 
 Le condizioni che fanno si che la funzione \func{select} ritorni segnalando
 che un socket (che sarà riportato nel primo insieme di file descriptor) è
@@ -2915,27 +2914,27 @@ codice completo si trova nel file \file{TCP\_echo\_third.c} dei sorgenti
 allegati alla guida.
 
 In questo caso la funzione comincia (\texttt{\small 8--9}) con l'azzeramento
-del \itindex{file~descriptor~set} \textit{file descriptor set} \var{fset} e
-l'impostazione del valore \var{maxfd}, da passare a \func{select} come massimo
-per il numero di file descriptor. Per determinare quest'ultimo si usa la macro
-\code{max} definita nel nostro file \file{macro.h} che raccoglie una
-collezione di macro di preprocessore di varia utilità.
+del \textit{file descriptor set} \var{fset} e l'impostazione del valore
+\var{maxfd}, da passare a \func{select} come massimo per il numero di file
+descriptor. Per determinare quest'ultimo si usa la macro \code{max} definita
+nel nostro file \file{macro.h} che raccoglie una collezione di macro di
+preprocessore di varia utilità.
 
 La funzione prosegue poi (\texttt{\small 10--41}) con il ciclo principale, che
 viene ripetuto indefinitamente. Per ogni ciclo si reinizializza
-(\texttt{\small 11--12}) il \itindex{file~descriptor~set} \textit{file
-  descriptor set}, impostando i valori per il file descriptor associato al
-socket \var{socket} e per lo standard input (il cui valore si recupera con la
-funzione \func{fileno}). Questo è necessario in quanto la successiva
-(\texttt{\small 13}) chiamata a \func{select} comporta una modifica dei due
-bit relativi, che quindi devono essere reimpostati all'inizio di ogni ciclo.
+(\texttt{\small 11--12}) il \textit{file descriptor set}, impostando i valori
+per il file descriptor associato al socket \var{socket} e per lo standard
+input (il cui valore si recupera con la funzione \func{fileno}). Questo è
+necessario in quanto la successiva (\texttt{\small 13}) chiamata a
+\func{select} comporta una modifica dei due bit relativi, che quindi devono
+essere reimpostati all'inizio di ogni ciclo.
 
 Si noti come la chiamata a \func{select} venga eseguita usando come primo
 argomento il valore di \var{maxfd}, precedentemente calcolato, e passando poi
-il solo \itindex{file~descriptor~set} \textit{file descriptor set} per il
-controllo dell'attività in lettura, negli altri argomenti sono passati tutti
-puntatori nulli, non interessando né il controllo delle altre attività, né
-l'impostazione di un valore di timeout.
+il solo \textit{file descriptor set} per il controllo dell'attività in
+lettura, negli altri argomenti sono passati tutti puntatori nulli, non
+interessando né il controllo delle altre attività, né l'impostazione di un
+valore di timeout.
 
 Al ritorno di \func{select} si provvede a controllare quale dei due file
 descriptor presenta attività in lettura, cominciando (\texttt{\small 14--24})
@@ -3211,8 +3210,8 @@ precedente versione causava l'immediato ritorno della funzione; in questo caso
 prima (\texttt{\small 19}) si imposta opportunamente \var{eof} ad un valore
 non nullo, dopo di che (\texttt{\small 20}) si effettua la chiusura del lato
 in scrittura del socket con \func{shutdown}. Infine (\texttt{\small 21}) si
-usa la macro \macro{FD\_CLR} per togliere lo standard input dal
-\itindex{file~descriptor~set} \textit{file descriptor set}.
+usa la macro \macro{FD\_CLR} per togliere lo standard input dal \textit{file
+  descriptor set}.
 
 In questo modo anche se la lettura del file in ingresso è conclusa, la
 funzione non esce dal ciclo principale (\texttt{\small 11--50}), ma continua
@@ -3293,15 +3292,14 @@ aperti viene impostato a quello del socket in ascolto,\footnote{in quanto esso
   alto.} che verrà anche (\texttt{\small 4}) inserito nella tabella.
 
 La prima sezione (\texttt{\small 7--10}) del ciclo principale esegue la
-costruzione del \itindex{file~descriptor~set} \textit{file descriptor set}
-\var{fset} in base ai socket connessi in un certo momento; all'inizio ci sarà
-soltanto il socket in ascolto, ma nel prosieguo delle operazioni, verranno
-utilizzati anche tutti i socket connessi registrati nella tabella
-\var{fd\_open}.  Dato che la chiamata di \func{select} modifica il valore del
-\itindex{file~descriptor~set} \textit{file descriptor set}, è necessario
-ripetere (\texttt{\small 7}) ogni volta il suo azzeramento, per poi procedere
-con il ciclo (\texttt{\small 8--10}) in cui si impostano i socket trovati
-attivi.
+costruzione del \textit{file descriptor set} \var{fset} in base ai socket
+connessi in un certo momento; all'inizio ci sarà soltanto il socket in
+ascolto, ma nel prosieguo delle operazioni, verranno utilizzati anche tutti i
+socket connessi registrati nella tabella \var{fd\_open}.  Dato che la chiamata
+di \func{select} modifica il valore del \textit{file descriptor set}, è
+necessario ripetere (\texttt{\small 7}) ogni volta il suo azzeramento, per poi
+procedere con il ciclo (\texttt{\small 8--10}) in cui si impostano i socket
+trovati attivi.
 
 Per far questo si usa la caratteristica dei file descriptor, descritta in
 sez.~\ref{sec:file_open_close}, per cui il kernel associa sempre ad ogni nuovo
@@ -3351,13 +3349,13 @@ vi sono dati sui socket connessi, per questo si ripete un ciclo
 diverso da zero; in questo modo se l'unico socket con attività era quello
 connesso, avendo opportunamente decrementato il contatore, il ciclo verrà
 saltato, e si ritornerà immediatamente (ripetuta l'inizializzazione del
-\itindex{file~descriptor~set} \textit{file descriptor set} con i nuovi valori
-nella tabella) alla chiamata di \func{accept}. Se il socket attivo non è
-quello in ascolto, o ce ne sono comunque anche altri, il valore di \var{n} non
-sarà nullo ed il controllo sarà eseguito. Prima di entrare nel ciclo comunque
-si inizializza (\texttt{\small 28}) il valore della variabile \var{i} che
-useremo come indice nella tabella \var{fd\_open} al valore minimo,
-corrispondente al file descriptor del socket in ascolto.
+\textit{file descriptor set} con i nuovi valori nella tabella) alla chiamata
+di \func{accept}. Se il socket attivo non è quello in ascolto, o ce ne sono
+comunque anche altri, il valore di \var{n} non sarà nullo ed il controllo sarà
+eseguito. Prima di entrare nel ciclo comunque si inizializza (\texttt{\small
+  28}) il valore della variabile \var{i} che useremo come indice nella tabella
+\var{fd\_open} al valore minimo, corrispondente al file descriptor del socket
+in ascolto.
 
 Il primo passo (\texttt{\small 30}) nella verifica è incrementare il valore
 dell'indice \var{i} per posizionarsi sul primo valore possibile per un file
@@ -3433,8 +3431,7 @@ maggior parte dei casi, in quanto essa è nata sotto BSD proprio per affrontare
 queste problematiche con i socket.  Abbiamo però visto in
 sez.~\ref{sec:file_multiplexing} come la funzione \func{poll} possa costituire
 una alternativa a \func{select}, con alcuni vantaggi.\footnote{non soffrendo
-  delle limitazioni dovute all'uso dei \itindex{file~descriptor~set}
-  \textit{file descriptor set}.}
+  delle limitazioni dovute all'uso dei \textit{file descriptor set}.}
 
 Ancora una volta in sez.~\ref{sec:file_poll} abbiamo trattato la funzione in
 maniera generica, parlando di file descriptor, ma come per \func{select}
@@ -3570,11 +3567,9 @@ uscita e notifica in caso si errore (\texttt{\small 49--52}).
 Come si può notare la logica del programma è identica a quella vista in
 fig.~\ref{fig:TCP_SelectEchod} per l'analogo server basato su \func{select};
 la sola differenza significativa è che in questo caso non c'è bisogno di
-rigenerare i \itindex{file~descriptor~set} \textit{file descriptor set} in
-quanto l'uscita è indipendente dai dati in ingresso. Si applicano comunque
-anche a questo server le considerazioni finali di
-sez.~\ref{sec:TCP_serv_select}.
-
+rigenerare i \textit{file descriptor set} in quanto l'uscita è indipendente
+dai dati in ingresso. Si applicano comunque anche a questo server le
+considerazioni finali di sez.~\ref{sec:TCP_serv_select}.