Inserite nuove macro per la indicizzazione della definizione delle funzioni
[gapil.git] / system.tex
index ec2f1b6a14fc0df116a0c36bc1fddfc5fc52616e..69d6036231267f1956bd5c1e17b253e43dd87a67 100644 (file)
@@ -535,21 +535,21 @@ struct utsname {
   \end{lstlisting}
   \end{minipage}
   \normalsize 
-  \caption{La struttura \var{utsname}.} 
+  \caption{La struttura \structd{utsname}.} 
   \label{fig:sys_utsname}
 \end{figure}
 
 In generale si tenga presente che le dimensioni delle stringe di una
-\var{utsname} non è specificata, e che esse sono sempre terminate con
-\val{null}; il manuale delle \acr{glibc} indica due diverse dimensioni,
+\struct{utsname} non è specificata, e che esse sono sempre terminate con NUL;
+il manuale delle \acr{glibc} indica due diverse dimensioni,
 \const{\_UTSNAME\_LENGTH} per i campi standard e
 \const{\_UTSNAME\_DOMAIN\_LENGTH} per quello specifico per il nome di dominio;
 altri sistemi usano nomi diversi come \const{SYS\_NMLN} o \const{\_SYS\_NMLN}
 o \const{UTSLEN} che possono avere valori diversi.\footnote{Nel caso di Linux
-\func{uname} corrisponde in realtà a 3 system call diverse, le prime due usano
-rispettivamente delle lunghezze delle stringhe di 9 e 65 byte; la terza usa
-anch'essa 65 byte, ma restituisce anche l'ultimo campo, \var{domainname}, con
-una lunghezza di 257 byte.}
+  \func{uname} corrisponde in realtà a 3 system call diverse, le prime due
+  usano rispettivamente delle lunghezze delle stringhe di 9 e 65 byte; la
+  terza usa anch'essa 65 byte, ma restituisce anche l'ultimo campo,
+  \var{domainname}, con una lunghezza di 257 byte.}
 
 
 \section{Opzioni e configurazione del sistema}
@@ -886,12 +886,12 @@ informazioni riguardo al filesystem su cui si trova un certo file, sono
 
 Queste funzioni permettono di ottenere una serie di informazioni generali
 riguardo al filesystem su cui si trova il file specificato; queste vengono
-restituite una struttura \param{buf} di tipo \type{statfs} definita come in
-\figref{fig:sys_statfs}, ed i campi che sono indefiniti per il filesystem in
-esame sono impostati a zero.  I valori del campo \var{f\_type} sono definiti
-per i vari filesystem nei relativi file di header dei sorgenti del kernel da
-costanti del tipo \var{XXX\_SUPER\_MAGIC}, dove \var{XXX} in genere è il
-nome del filesystem stesso.
+restituite all'indirizzo \param{buf} di una struttura \struct{statfs} definita
+come in \figref{fig:sys_statfs}, ed i campi che sono indefiniti per il
+filesystem in esame sono impostati a zero.  I valori del campo \var{f\_type}
+sono definiti per i vari filesystem nei relativi file di header dei sorgenti
+del kernel da costanti del tipo \var{XXX\_SUPER\_MAGIC}, dove \var{XXX} in
+genere è il nome del filesystem stesso.
 
 \begin{figure}[!htb]
   \footnotesize \centering
@@ -912,18 +912,18 @@ struct statfs {
 \end{lstlisting}
   \end{minipage}
   \normalsize 
-  \caption{La struttura \var{statfs}.} 
+  \caption{La struttura \structd{statfs}.} 
   \label{fig:sys_statfs}
 \end{figure}
 
 
 Le \acr{glibc} provvedono infine una serie di funzioni per la gestione dei due
-file \file{/etc/fstab} ed \file{/etc/mtab}, che convenzionalmente sono usati in
-quasi tutti i sistemi unix-like per mantenere rispettivamente le informazioni
-riguardo ai filesystem da montare e a quelli correntemente montati. Le
-funzioni servono a leggere il contenuto di questi file in opportune strutture
-\var{struct fstab} e \var{struct mntent}, e, per \file{/etc/mtab} per inserire
-e rimuovere le voci presenti nel file.
+file \file{/etc/fstab} ed \file{/etc/mtab}, che convenzionalmente sono usati
+in quasi tutti i sistemi unix-like per mantenere rispettivamente le
+informazioni riguardo ai filesystem da montare e a quelli correntemente
+montati. Le funzioni servono a leggere il contenuto di questi file in
+opportune strutture \struct{fstab} e \struct{mntent}, e, per \file{/etc/mtab}
+per inserire e rimuovere le voci presenti nel file.
 
 In generale si dovrebbero usare queste funzioni (in particolare quelle
 relative a \file{/etc/mtab}), quando si debba scrivere un programma che
@@ -975,7 +975,7 @@ Le due funzioni forniscono le informazioni memorizzate nel database degli
 utenti (che nelle versioni più recenti possono essere ottenute attraverso PAM)
 relative all'utente specificato attraverso il suo \acr{uid} o il nome di
 login. Entrambe le funzioni restituiscono un puntatore ad una struttura di
-tipo \type{passwd} la cui definizione (anch'essa eseguita in \file{pwd.h}) è
+tipo \struct{passwd} la cui definizione (anch'essa eseguita in \file{pwd.h}) è
 riportata in \figref{fig:sys_passwd_struct}, dove è pure brevemente illustrato
 il significato dei vari campi. 
 
@@ -996,8 +996,8 @@ struct passwd {
     \end{lstlisting}
   \end{minipage} 
   \normalsize 
-  \caption{La struttura \var{passwd} contenente le informazioni relative ad un
-    utente del sistema.}
+  \caption{La struttura \structd{passwd} contenente le informazioni relative ad
+    un utente del sistema.}
   \label{fig:sys_passwd_struct}
 \end{figure}
 
@@ -1026,15 +1026,15 @@ essere rientranti, per cui ne esistono anche due versioni alternative
 
 In questo caso l'uso è molto più complesso, in quanto bisogna prima allocare
 la memoria necessaria a contenere le informazioni. In particolare i valori
-della struttura \var{passwd} saranno restituiti all'indirizzo \param{password}
-mentre la memoria allocata all'indirizzo \param{buffer}, per un massimo di
-\param{buflen} byte, sarà utilizzata per contenere le stringhe puntate dai
-campi di \param{password}. Infine all'indirizzo puntato da \param{result}
-viene restituito il puntatore ai dati ottenuti, cioè \param{buffer} nel caso
-l'utente esista, o \val{null} altrimenti.  Qualora i dati non possano essere
-contenuti nei byte specificati da \param{buflen}, la funzione fallirà
-restituendo \errcode{ERANGE} (e \param{result} sarà comunque impostato a
-\val{null}).
+della struttura \struct{passwd} saranno restituiti all'indirizzo
+\param{password} mentre la memoria allocata all'indirizzo \param{buffer}, per
+un massimo di \param{buflen} byte, sarà utilizzata per contenere le stringhe
+puntate dai campi di \param{password}. Infine all'indirizzo puntato da
+\param{result} viene restituito il puntatore ai dati ottenuti, cioè
+\param{buffer} nel caso l'utente esista, o \val{null} altrimenti.  Qualora i
+dati non possano essere contenuti nei byte specificati da \param{buflen}, la
+funzione fallirà restituendo \errcode{ERANGE} (e \param{result} sarà comunque
+impostato a \val{null}).
 
 Del tutto analoghe alle precedenti sono le funzioni \func{getgrnam} e
 \func{getgrgid} (e le relative analoghe rientranti con la stessa estensione
@@ -1063,7 +1063,8 @@ loro prototipi sono:
 Il comportamento di tutte queste funzioni è assolutamente identico alle
 precedenti che leggono le informazioni sugli utenti, l'unica differenza è che
 in questo caso le informazioni vengono restituite in una struttura di tipo
-\type{group}, la cui definizione è riportata in \figref{fig:sys_group_struct}.
+\struct{group}, la cui definizione è riportata in
+\figref{fig:sys_group_struct}.
 
 \begin{figure}[!htb]
   \footnotesize
@@ -1079,8 +1080,8 @@ struct group {
     \end{lstlisting}
   \end{minipage} 
   \normalsize 
-  \caption{La struttura \var{group} contenente le informazioni relative ad un
-    gruppo del sistema.}
+  \caption{La struttura \structd{group} contenente le informazioni relative ad
+    un gruppo del sistema.}
   \label{fig:sys_group_struct}
 \end{figure}
 
@@ -1223,12 +1224,12 @@ una voce con le funzioni \func{getutent}, \func{getutid}, \func{getutline} e
 
   \funcdecl{struct utmp *pututline(struct utmp *ut)} 
   Scrive una voce nel database.
-
-  \bodydesc{Le funzioni ritornano il puntatore ad una struttura \var{utmp} in
-    caso di successo e \val{null} in caso di errore.}
+  
+  \bodydesc{Le funzioni ritornano il puntatore ad una struttura \struct{utmp}
+    in caso di successo e \val{NULL} in caso di errore.}
 \end{functions}
 
-Tutte queste funzioni fanno riferimento ad una struttura di tipo \var{utmp},
+Tutte queste funzioni fanno riferimento ad una struttura di tipo \struct{utmp},
 la cui definizione in Linux è riportata in \secref{fig:sys_utmp_struct}. Le
 prime tre funzioni servono per leggere una voce dal database; \func{getutent}
 legge semplicemente la prima voce disponibile; le altre due permettono di
@@ -1257,8 +1258,8 @@ struct utmp
     \end{lstlisting}
   \end{minipage} 
   \normalsize 
-  \caption{La struttura \var{utmp} contenente le informazioni di una voce del
-    database di \textit{accounting}.}
+  \caption{La struttura \structd{utmp} contenente le informazioni di una voce
+    del database di \textit{accounting}.}
   \label{fig:sys_utmp_struct}
 \end{figure}
 
@@ -1342,13 +1343,13 @@ prototipi sono:
   \funcdecl{void logwtmp(const char *line, const char *name, const char
     *host)} Aggiunge nel database di accounting una voce con i valori
   specificati.
-
-  \bodydesc{Le funzioni ritornano il puntatore ad una struttura \var{utmp} in
-    caso di successo e \val{null} in caso di errore.}
+  
+  \bodydesc{Le funzioni ritornano il puntatore ad una struttura \struct{utmp}
+    in caso di successo e \val{NULL} in caso di errore.}
 \end{functions}
 
 La prima funzione permette l'aggiunta di una voce a \file{wmtp} specificando
-direttamente una struttura \type{utmp}, mentre la seconda utilizza gli
+direttamente una struttura \struct{utmp}, mentre la seconda utilizza gli
 argomenti \param{line}, \param{name} e \param{host} per costruire la voce che
 poi aggiunge chiamando \func{updwtmp}.
 
@@ -1369,7 +1370,7 @@ permettono di imporre a ciascuno di essi vincoli e limiti di utilizzo.
 
 Come abbiamo accennato in \secref{sec:proc_wait4} le informazioni riguardo
 l'utilizzo delle risorse da parte di un processo è mantenuto in una struttura
-di tipo \code{struct }\type{rusage}, la cui definizione (che si trova in
+di tipo \struct{rusage}, la cui definizione (che si trova in
 \file{sys/resource.h}) è riportata in \figref{fig:sys_rusage_struct}.
 
 \begin{figure}[!htb]
@@ -1398,7 +1399,7 @@ struct rusage {
     \end{lstlisting}
   \end{minipage} 
   \normalsize 
-  \caption{La struttura \var{rusage} per la lettura delle informazioni dei 
+  \caption{La struttura \structd{rusage} per la lettura delle informazioni dei 
     delle risorse usate da un processo.}
   \label{fig:sys_rusage_struct}
 \end{figure}
@@ -1420,8 +1421,8 @@ memoria per essere inserito nello swap.
 
 In genere includere esplicitamente \file{<sys/time.h>} non è più necessario,
 ma aumenta la portabilità, e serve comunque quando, come nella maggior parte
-dei casi, si debba accedere ai campi di \var{rusage} relativi ai tempi di
-utilizzo del processore, che sono definiti come \code{struct }\type{timeval}.
+dei casi, si debba accedere ai campi di \struct{rusage} relativi ai tempi di
+utilizzo del processore, che sono definiti come strutture \struct{timeval}.
 
 
 Questa è la stessa struttura utilizzata da \func{wait4}  per ricavare la
@@ -1463,7 +1464,7 @@ In generale il primo viene chiamato un limite \textsl{soffice} (o \textit{soft
   limit}) dato che il suo valore può essere aumentato, mentre il secondo è
 detto \textsl{duro} (o \textit{hard limit}), in quanto un processo normale non
 può modificarne il valore. Il valore di questi limiti è mantenuto in una
-struttura \var{rlimit}, la cui definizione è riportata in
+struttura \struct{rlimit}, la cui definizione è riportata in
 \figref{fig:sys_rlimit_struct}, ed i cui campi corrispondono appunto a limite
 corrente e massimo.
 
@@ -1479,7 +1480,7 @@ struct rlimit {
     \end{lstlisting}
   \end{minipage} 
   \normalsize 
-  \caption{La struttura \var{rlimit} per impostare i limiti di utilizzo 
+  \caption{La struttura \structd{rlimit} per impostare i limiti di utilizzo 
     delle risorse usate da un processo.}
   \label{fig:sys_rlimit_struct}
 \end{figure}
@@ -1514,7 +1515,7 @@ prototipi sono:
 
 Entrambe le funzioni permettono di specificare su quale risorsa si vuole
 operare attraverso \param{resource}, i cui possibili valori sono elencati in
-\secref{tab:sys_rlimit_values}, e utilizzano una struttura \var{rlimit} per
+\secref{tab:sys_rlimit_values}, e utilizzano una struttura \struct{rlimit} per
 specificarne i valori.
 
 \begin{table}[htb]
@@ -1788,7 +1789,7 @@ possono essere letti attraverso la funzione \func{times}, il cui prototipo 
 \end{prototype}
 
 La funzione restituisce i valori di process time del processo corrente in una
-struttura di tipo \var{tms}, la cui definizione è riportata in
+struttura di tipo \struct{tms}, la cui definizione è riportata in
 \secref{fig:sys_tms_struct}. La struttura prevede quattro campi; i primi due,
 \var{tms\_utime} e \var{tms\_stime}, sono l'\textit{user time} ed il
 \textit{system time} del processo, così come definiti in
@@ -1808,7 +1809,7 @@ struct tms {
     \end{lstlisting}
   \end{minipage} 
   \normalsize 
-  \caption{La struttura \var{tms} dei tempi di processore associati a un
+  \caption{La struttura \structd{tms} dei tempi di processore associati a un
     processo.} 
   \label{fig:sys_tms_struct}
 \end{figure}
@@ -1886,8 +1887,8 @@ sono:
     \errval{EPERM}.}
 \end{functions}
 
-Queste funzioni utilizzano una struttura di tipo \var{timeval}, la cui
-definizione, insieme a quella della analoga \var{timespec}, è riportata in
+Queste funzioni utilizzano una struttura di tipo \struct{timeval}, la cui
+definizione, insieme a quella della analoga \struct{timespec}, è riportata in
 \figref{fig:sys_timeval_struct}. Le \acr{glibc} infatti forniscono queste due
 rappresentazioni alternative del \textit{calendar time} che rispetto a
 \type{time\_t} consentono rispettivamente precisioni del microsecondo e del
@@ -1911,7 +1912,7 @@ struct timespec {
     \end{lstlisting}
   \end{minipage} 
   \normalsize 
-  \caption{Le strutture \var{timeval} e \var{timespec} usate per una
+  \caption{Le strutture \structd{timeval} e \structd{timespec} usate per una
     rappresentazione ad alta risoluzione del \textit{calendar time}.}
   \label{fig:sys_timeval_struct}
 \end{figure}
@@ -1920,8 +1921,8 @@ Come nel caso di \func{stime} anche \func{settimeofday} (e qualunque funzione
 vada a modificare l'orologio di sistema, come quelle che tratteremo in
 seguito) può essere utilizzata solo da un processo coi privilegi di
 amministratore.  Il secondo parametro di entrambe le funzioni è una struttura
-\var{timezone}, che storicamente veniva utilizzata per specificare appunto la
-\textit{time zone}, cioè l'insieme del fuso orario e delle convenzioni per
+\struct{timezone}, che storicamente veniva utilizzata per specificare appunto
+la \textit{time zone}, cioè l'insieme del fuso orario e delle convenzioni per
 l'ora legale che permettevano il passaggio dal tempo universale all'ora
 locale. Questo parametro è obsoleto e in Linux non è mai stato utilizzato e
 non è supportato né dalle vecchie \textsl{libc5}, né dalle \textsl{glibc}:
@@ -1964,11 +1965,11 @@ modificare anche la velocit
     assumerà i valori \errval{EFAULT}, \errval{EINVAL} ed \errval{EPERM}.}
 \end{prototype}
 
-La funzione richiede una struttura di tipo \var{timex}, la cui definizione,
+La funzione richiede una struttura di tipo \struct{timex}, la cui definizione,
 così come effettuata in \file{sys/timex.h}, è riportata in
 \figref{fig:sys_timex_struct}. L'azione della funzione dipende dal valore del
 campo \var{mode}, che specifica quale parametro dell'orologio di sistema,
-specificato in un opportuno campo di \var{timex}, deve essere impostato. Un
+specificato in un opportuno campo di \struct{timex}, deve essere impostato. Un
 valore nullo serve per leggere i parametri correnti; i valori diversi da zero
 devono essere specificati come OR binario delle costanti riportate in
 \secref{tab:sys_timex_mode}.
@@ -2001,7 +2002,8 @@ struct timex {
     \end{lstlisting}
   \end{minipage} 
   \normalsize 
-  \caption{La struttura \var{timex} per il controllo dell'orologio di sistema.}
+  \caption{La struttura \structd{timex} per il controllo dell'orologio di
+    sistema.} 
   \label{fig:sys_timex_struct}
 \end{figure}
 
@@ -2012,7 +2014,7 @@ anche un suo omonimo \func{ntp\_adjtime}.  La trattazione completa di questa
 funzione necessita di una lettura approfondita del meccanismo descritto
 nell'RFC~1305, ci limitiamo a descrivere in \tabref{tab:sys_timex_mode} i
 principali valori utilizzabili per il campo \var{mode}, un elenco più
-dettagliato del significato dei vari campi della struttura \var{timex} può
+dettagliato del significato dei vari campi della struttura \struct{timex} può
 essere ritrovato in \cite{glibc}.
 
 \begin{table}[htb]
@@ -2027,33 +2029,33 @@ essere ritrovato in \cite{glibc}.
                                            reale e l'orologio di sistema, che 
                                            deve essere indicata in microsecondi
                                            nel campo \var{offset} di
-                                           \var{timex}.\\ 
+                                           \struct{timex}.\\ 
     \const{ADJ\_FREQUENCY}      & 0x0002 & Imposta la differenze in frequenza
                                            fra il tempo reale e l'orologio di
                                            sistema, che deve essere indicata
                                            in parti per milione nel campo
-                                           \var{frequency} di \var{timex}.\\
+                                           \var{frequency} di \struct{timex}.\\
     \const{ADJ\_MAXERROR}       & 0x0004 & Imposta il valore massimo 
                                            dell'errore
                                            sul tempo, espresso in microsecondi 
                                            nel campo \var{maxerror} di
-                                           \var{timex}.\\ 
+                                           \struct{timex}.\\ 
     \const{ADJ\_ESTERROR}       & 0x0008 & Imposta la stima dell'errore
                                            sul tempo, espresso in microsecondi 
                                            nel campo \var{esterror} di
-                                           \var{timex}.\\
+                                           \struct{timex}.\\
     \const{ADJ\_STATUS}         & 0x0010 & Imposta alcuni
                                            valori di stato interni usati dal
                                            sistema nella gestione
                                            dell'orologio specificati nel campo
-                                           \var{status} di \var{timex}.\\ 
+                                           \var{status} di \struct{timex}.\\ 
     \const{ADJ\_TIMECONST}      & 0x0020 & Imposta la larghezza di banda del 
                                            PLL implementato dal kernel,
                                            specificato nel campo
-                                           \var{constant} di \var{timex}.\\ 
+                                           \var{constant} di \struct{timex}.\\ 
     \const{ADJ\_TICK}           & 0x4000 & Imposta il valore dei tick del timer
                                            in microsecondi, espresso nel campo
-                                           \var{tick} di \var{timex}.\\ 
+                                           \var{tick} di \struct{timex}.\\ 
     \const{ADJ\_OFFSET\_SINGLESHOT}&0x8001&Imposta uno spostamento una tantum 
                                            dell'orologio secondo il valore del
                                            campo \var{offset} simulando il
@@ -2061,7 +2063,7 @@ essere ritrovato in \cite{glibc}.
     \hline
   \end{tabular}
   \caption{Costanti per l'assegnazione del valore del campo \var{mode} della
-    struttura \var{timex}.} 
+    struttura \struct{timex}.} 
   \label{tab:sys_timex_mode}
 \end{table}
 
@@ -2129,12 +2131,12 @@ struct tm {
     \end{lstlisting}
   \end{minipage} 
   \normalsize 
-  \caption{La struttura \var{tm} per una rappresentazione del tempo in termini
-    di ora, minuti, secondi, ecc.}
+  \caption{La struttura \structd{tm} per una rappresentazione del tempo in
+    termini di ora, minuti, secondi, ecc.}
   \label{fig:sys_tm_struct}
 \end{figure}
 
-Questo viene effettuato attraverso una opportuna struttura \var{tm}, la cui
+Questo viene effettuato attraverso una opportuna struttura \struct{tm}, la cui
 definizione è riportata in \figref{fig:sys_tm_struct}, ed è in genere questa
 struttura che si utilizza quando si deve specificare un tempo a partire dai
 dati naturali (ora e data), dato che essa consente anche di trattare la
@@ -2189,7 +2191,7 @@ l'utente deve specificare il buffer su cui la stringa deve essere copiata
 (deve essere di almeno 26 caratteri).
 
 Le altre tre funzioni, \func{gmtime}, \func{localtime} e \func{mktime} servono
-per convertire il tempo dal formato \type{time\_t} a quello di \var{tm} e
+per convertire il tempo dal formato \type{time\_t} a quello di \struct{tm} e
 viceversa; \func{gmtime} effettua la conversione usando il tempo coordinato
 universale (UTC), cioè l'ora di Greenwich; mentre \func{localtime} usa l'ora
 locale; \func{mktime} esegue la conversione inversa.  
@@ -2206,7 +2208,7 @@ locale, compresa l'eventuale ora legale. Questo viene fatto attraverso le tre
 variabili globali mostrate in \figref{fig:sys_tzname}, cui si accede quando si
 include \file{time.h}. Queste variabili vengono impostate quando si chiama una
 delle precedenti funzioni di conversione, oppure invocando direttamente la
-funzione \func{tzset}, il cui prototipo è:
+funzione \funcd{tzset}, il cui prototipo è:
 \begin{prototype}{sys/timex.h}
 {void tzset(void)} 
   
@@ -2354,7 +2356,7 @@ normale.
 I valori che può assumere \var{errno} sono riportati in \capref{cha:errors},
 nell'header \file{errno.h} sono anche definiti i nomi simbolici per le
 costanti numeriche che identificano i vari errori; essi iniziano tutti per
-\var{E} e si possono considerare come nomi riservati. In seguito faremo
+\val{E} e si possono considerare come nomi riservati. In seguito faremo
 sempre riferimento a tali valori, quando descriveremo i possibili errori
 restituiti dalle funzioni. Il programma di esempio \cmd{errcode} stampa il
 codice relativo ad un valore numerico con l'opzione \cmd{-l}.
@@ -2430,13 +2432,13 @@ automatizzata sullo standard error (vedi \secref{sec:file_std_descr}) 
 \func{perror}, il cui prototipo è:
 \begin{prototype}{stdio.h}{void perror(const char *message)} 
   Stampa il messaggio di errore relativo al valore corrente di \var{errno}
-  sullo standard error; preceduto dalla stringa \var{message}.
+  sullo standard error; preceduto dalla stringa \param{message}.
 \end{prototype}
 
 I messaggi di errore stampati sono gli stessi di \func{strerror}, (riportati
 in \capref{cha:errors}), e, usando il valore corrente di \var{errno}, si
 riferiscono all'ultimo errore avvenuto. La stringa specificata con
-\var{message} viene stampato prime del messaggio d'errore, seguita dai due
+\param{message} viene stampato prime del messaggio d'errore, seguita dai due
 punti e da uno spazio, il messaggio è terminato con un a capo.
 
 Il messaggio può essere riportato anche usando altre variabili globali