Sistemata buona parte del capitolo 3.
[gapil.git] / system.tex
index 45e13e04ed8048325f0ca711d35f57a4db6e3795..cd62e7c97e325d3c8a6334ecaca66d0100c85d56 100644 (file)
@@ -520,7 +520,7 @@ fig.~\ref{fig:sys_utsname}, solo definendo \macro{\_GNU\_SOURCE}.
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/ustname.h}
   \end{minipage}
   \normalsize 
     \includestruct{listati/ustname.h}
   \end{minipage}
   \normalsize 
@@ -559,7 +559,7 @@ lettura.  Affronteremo questi argomenti in questa sezione, insieme alle
 funzioni che si usano per il controllo di altre caratteristiche generali del
 sistema, come quelle per la gestione dei filesystem e di utenti e gruppi.
 
 funzioni che si usano per il controllo di altre caratteristiche generali del
 sistema, come quelle per la gestione dei filesystem e di utenti e gruppi.
 
-% TODO ristrutturare e aggiungere \func{prctl}
+% TODO ristrutturare ?
 
 \subsection{La funzione \func{sysctl} ed il filesystem \file{/proc}}
 \label{sec:sys_sysctl}
 
 \subsection{La funzione \func{sysctl} ed il filesystem \file{/proc}}
 \label{sec:sys_sysctl}
@@ -899,7 +899,7 @@ genere è il nome del filesystem stesso.
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/statfs.h}
   \end{minipage}
   \normalsize 
     \includestruct{listati/statfs.h}
   \end{minipage}
   \normalsize 
@@ -929,9 +929,13 @@ tralasceremo la trattazione, rimandando al manuale delle \acr{glibc}
 
 % TODO documentare keyctl ????
 % (fare sezione dedicata ????)
 
 % TODO documentare keyctl ????
 % (fare sezione dedicata ????)
-%\subsection{La gestione delle chiavi}
+%\subsection{La gestione delle chiavi crittografiche}
 %\label{sec:keyctl_management}
 
 %\label{sec:keyctl_management}
 
+%
+% \subsection{La gestione dello spegnimento e del riavvio}
+%\label{sec:sys_reboot}
+% TODO trattare reboot, kexec_load, ...
 
 
 \subsection{La gestione delle informazioni su utenti e gruppi}
 
 
 \subsection{La gestione delle informazioni su utenti e gruppi}
@@ -1015,7 +1019,7 @@ illustrato il significato dei vari campi.
 \begin{figure}[!htb]
   \footnotesize
   \centering
 \begin{figure}[!htb]
   \footnotesize
   \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/passwd.h}
   \end{minipage} 
   \normalsize 
     \includestruct{listati/passwd.h}
   \end{minipage} 
   \normalsize 
@@ -1093,7 +1097,7 @@ fig.~\ref{fig:sys_group_struct}.
 \begin{figure}[!htb]
   \footnotesize
   \centering
 \begin{figure}[!htb]
   \footnotesize
   \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/group.h}
   \end{minipage} 
   \normalsize 
     \includestruct{listati/group.h}
   \end{minipage} 
   \normalsize 
@@ -1274,7 +1278,7 @@ disponibile; le altre due permettono di eseguire una ricerca.
 \begin{figure}[!htb]
   \footnotesize
   \centering
 \begin{figure}[!htb]
   \footnotesize
   \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/utmp.h}
   \end{minipage} 
   \normalsize 
     \includestruct{listati/utmp.h}
   \end{minipage} 
   \normalsize 
@@ -1395,7 +1399,7 @@ di tipo \struct{rusage}, la cui definizione (che si trova in
 \begin{figure}[!htb]
   \footnotesize
   \centering
 \begin{figure}[!htb]
   \footnotesize
   \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/rusage.h}
   \end{minipage} 
   \normalsize 
     \includestruct{listati/rusage.h}
   \end{minipage} 
   \normalsize 
@@ -1492,7 +1496,7 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard
                               \errcode{ENOMEM}, mentre se il superamento viene
                               causato dalla crescita dello \itindex{stack}
                               \textit{stack} il processo riceverà un segnale di
                               \errcode{ENOMEM}, mentre se il superamento viene
                               causato dalla crescita dello \itindex{stack}
                               \textit{stack} il processo riceverà un segnale di
-                              \const{SIGSEGV}.\\  
+                              \signal{SIGSEGV}.\\  
     \const{RLIMIT\_CORE}   &  La massima dimensione per di un file di
                               \itindex{core~dump} \textit{core dump} (vedi
                               sez.~\ref{sec:sig_prog_error}) creato nella
     \const{RLIMIT\_CORE}   &  La massima dimensione per di un file di
                               \itindex{core~dump} \textit{core dump} (vedi
                               sez.~\ref{sec:sig_prog_error}) creato nella
@@ -1504,13 +1508,13 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard
                               sez.~\ref{sec:sys_cpu_times}) che il processo può
                               usare. Il superamento del limite corrente
                               comporta l'emissione di un segnale di
                               sez.~\ref{sec:sys_cpu_times}) che il processo può
                               usare. Il superamento del limite corrente
                               comporta l'emissione di un segnale di
-                              \const{SIGXCPU}, la cui azione predefinita (vedi
+                              \signal{SIGXCPU}, la cui azione predefinita (vedi
                               sez.~\ref{sec:sig_classification}) è terminare
                               il processo, una volta al secondo fino al
                               raggiungimento del limite massimo. Il
                               superamento del limite massimo 
                               comporta l'emissione di un segnale di
                               sez.~\ref{sec:sig_classification}) è terminare
                               il processo, una volta al secondo fino al
                               raggiungimento del limite massimo. Il
                               superamento del limite massimo 
                               comporta l'emissione di un segnale di
-                              \const{SIGKILL}.\footnotemark\\
+                              \signal{SIGKILL}.\footnotemark\\
     \const{RLIMIT\_DATA}   &  La massima dimensione del \index{segmento!dati}
                               segmento dati di un 
                               processo (vedi sez.~\ref{sec:proc_mem_layout}).
     \const{RLIMIT\_DATA}   &  La massima dimensione del \index{segmento!dati}
                               segmento dati di un 
                               processo (vedi sez.~\ref{sec:proc_mem_layout}).
@@ -1521,7 +1525,7 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard
     \const{RLIMIT\_FSIZE}  &  La massima dimensione di un file che un processo
                               può creare. Se il processo cerca di scrivere
                               oltre questa dimensione riceverà un segnale di
     \const{RLIMIT\_FSIZE}  &  La massima dimensione di un file che un processo
                               può creare. Se il processo cerca di scrivere
                               oltre questa dimensione riceverà un segnale di
-                              \const{SIGXFSZ}, che di norma termina il
+                              \signal{SIGXFSZ}, che di norma termina il
                               processo; se questo viene intercettato la
                               system call che ha causato l'errore fallirà con
                               un errore di \errcode{EFBIG}.\\
                               processo; se questo viene intercettato la
                               system call che ha causato l'errore fallirà con
                               un errore di \errcode{EFBIG}.\\
@@ -1564,7 +1568,7 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard
                               \textit{stack} del processo. Se il processo
                               esegue operazioni che estendano lo
                               \textit{stack} oltre questa dimensione 
                               \textit{stack} del processo. Se il processo
                               esegue operazioni che estendano lo
                               \textit{stack} oltre questa dimensione 
-                              riceverà un segnale di \const{SIGSEGV}.\\
+                              riceverà un segnale di \signal{SIGSEGV}.\\
     \const{RLIMIT\_RSS}    &  L'ammontare massimo di pagine di memoria dato al
                               \index{segmento!testo} testo del processo. Il
                               limite è solo una indicazione per il kernel,
     \const{RLIMIT\_RSS}    &  L'ammontare massimo di pagine di memoria dato al
                               \index{segmento!testo} testo del processo. Il
                               limite è solo una indicazione per il kernel,
@@ -1583,7 +1587,7 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard
   oggi (la 2.6.x); altri kernel possono avere comportamenti diversi per quanto
   avviene quando viene superato il \textit{soft limit}; perciò per avere
   operazioni portabili è sempre opportuno intercettare il primo
   oggi (la 2.6.x); altri kernel possono avere comportamenti diversi per quanto
   avviene quando viene superato il \textit{soft limit}; perciò per avere
   operazioni portabili è sempre opportuno intercettare il primo
-  \const{SIGXCPU} e terminare in maniera ordinata il processo.}
+  \signal{SIGXCPU} e terminare in maniera ordinata il processo.}
 
 \footnotetext{il limite su questa risorsa è stato introdotto con il kernel
   2.6.8.}
 
 \footnotetext{il limite su questa risorsa è stato introdotto con il kernel
   2.6.8.}
@@ -1640,7 +1644,7 @@ limite corrente e limite massimo.
 \begin{figure}[!htb]
   \footnotesize
   \centering
 \begin{figure}[!htb]
   \footnotesize
   \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/rlimit.h}
   \end{minipage} 
   \normalsize 
     \includestruct{listati/rlimit.h}
   \end{minipage} 
   \normalsize 
@@ -1794,7 +1798,7 @@ La funzione attiva il salvataggio dei dati sul file indicato dal pathname
 contenuti nella stringa puntata da \param{filename}; la funzione richiede che
 il processo abbia i privilegi di amministratore (è necessaria la
 \itindex{capabilities} capability \const{CAP\_SYS\_PACCT}, vedi
 contenuti nella stringa puntata da \param{filename}; la funzione richiede che
 il processo abbia i privilegi di amministratore (è necessaria la
 \itindex{capabilities} capability \const{CAP\_SYS\_PACCT}, vedi
-sez.~\ref{sec:proc_capabilities}). Se si specifica il valore \const{NULL} per
+sez.~\ref{sec:proc_capabilities}). Se si specifica il valore \val{NULL} per
 \param{filename} il \textit{BSD accounting} viene invece disabilitato. Un
 semplice esempio per l'uso di questa funzione è riportato nel programma
 \texttt{AcctCtrl.c} dei sorgenti allegati alla guida.
 \param{filename} il \textit{BSD accounting} viene invece disabilitato. Un
 semplice esempio per l'uso di questa funzione è riportato nel programma
 \texttt{AcctCtrl.c} dei sorgenti allegati alla guida.
@@ -1816,12 +1820,6 @@ minimo indicato dal secondo valore (sempre in percentuale di spazio disco
 libero). Infine l'ultimo valore indica la frequenza in secondi con cui deve
 essere controllata detta percentuale.
 
 libero). Infine l'ultimo valore indica la frequenza in secondi con cui deve
 essere controllata detta percentuale.
 
-% TODO trattare quote disco 
-% vedi man quotactl
-%\section{La gestione delle quote disco}
-%\label{sec:disk_quota}
-
-
 
 \section{La gestione dei tempi del sistema}
 \label{sec:sys_time}
 
 \section{La gestione dei tempi del sistema}
 \label{sec:sys_time}
@@ -1941,6 +1939,8 @@ costante \const{CLOCKS\_PER\_SEC}.\footnote{le \acr{glibc} seguono lo standard
 valore massimo corrispondente a circa 72 minuti, dopo i quali il contatore
 riprenderà lo stesso valore iniziale.
 
 valore massimo corrispondente a circa 72 minuti, dopo i quali il contatore
 riprenderà lo stesso valore iniziale.
 
+% TODO questi valori sono obsoleti, verificare il tutto.
+
 Come accennato in sez.~\ref{sec:sys_unix_time} il tempo di CPU è la somma di
 altri due tempi, l'\textit{user time} ed il \textit{system time} che sono
 quelli effettivamente mantenuti dal kernel per ciascun processo. Questi
 Come accennato in sez.~\ref{sec:sys_unix_time} il tempo di CPU è la somma di
 altri due tempi, l'\textit{user time} ed il \textit{system time} che sono
 quelli effettivamente mantenuti dal kernel per ciascun processo. Questi
@@ -1963,7 +1963,7 @@ sez.~\ref{sec:sys_unix_time}.
 \begin{figure}[!htb]
   \footnotesize
   \centering
 \begin{figure}[!htb]
   \footnotesize
   \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/tms.h}
   \end{minipage} 
   \normalsize 
     \includestruct{listati/tms.h}
   \end{minipage} 
   \normalsize 
@@ -2105,7 +2105,7 @@ effettuato.
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/timex.h}
   \end{minipage} 
   \normalsize 
     \includestruct{listati/timex.h}
   \end{minipage} 
   \normalsize 
@@ -2284,7 +2284,7 @@ tempo in una stringa contenente data ed ora, i loro prototipi sono:
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/tm.h}
   \end{minipage} 
   \normalsize 
     \includestruct{listati/tm.h}
   \end{minipage} 
   \normalsize 
@@ -2326,10 +2326,11 @@ restituita la conversione.
 Come mostrato in fig.~\ref{fig:sys_tm_struct} il \textit{broken-down time}
 permette di tenere conto anche della differenza fra tempo universale e ora
 locale, compresa l'eventuale ora legale. Questo viene fatto attraverso le tre
 Come mostrato in fig.~\ref{fig:sys_tm_struct} il \textit{broken-down time}
 permette di tenere conto anche della differenza fra tempo universale e ora
 locale, compresa l'eventuale ora legale. Questo viene fatto attraverso le tre
-variabili globali mostrate in fig.~\ref{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 \funcd{tzset}, il cui prototipo è:
+\index{variabili!globali} variabili globali mostrate in
+fig.~\ref{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
+\funcd{tzset}, il cui prototipo è:
 \begin{prototype}{sys/timex.h}
 {void tzset(void)} 
   
 \begin{prototype}{sys/timex.h}
 {void tzset(void)} 
   
@@ -2345,12 +2346,12 @@ verrà usato il file \conffile{/etc/localtime}.
 \begin{figure}[!htb]
   \footnotesize
   \centering
 \begin{figure}[!htb]
   \footnotesize
   \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/time_zone_var.c}
   \end{minipage} 
   \normalsize 
     \includestruct{listati/time_zone_var.c}
   \end{minipage} 
   \normalsize 
-  \caption{Le variabili globali usate per la gestione delle \textit{time
-      zone}.}  
+  \caption{Le \index{variabili!globali} variabili globali usate per la
+    gestione delle \textit{time zone}.}
   \label{fig:sys_tzname}
 \end{figure}
 
   \label{fig:sys_tzname}
 \end{figure}
 
@@ -2465,12 +2466,12 @@ c'è stato un errore. Di solito questo valore è -1 o un puntatore nullo o la
 costante \val{EOF} (a seconda della funzione); ma questo valore segnala solo
 che c'è stato un errore, non il tipo di errore.
 
 costante \val{EOF} (a seconda della funzione); ma questo valore segnala solo
 che c'è stato un errore, non il tipo di errore.
 
-Per riportare il tipo di errore il sistema usa la variabile globale
-\var{errno},\footnote{l'uso di una variabile globale può comportare alcuni
-  problemi (ad esempio nel caso dei \itindex{thread} \textit{thread}) ma lo
-  standard ISO C consente anche di definire \var{errno} come un
-  \textit{modifiable lvalue}, quindi si può anche usare una macro, e questo è
-  infatti il modo usato da Linux per renderla locale ai singoli
+Per riportare il tipo di errore il sistema usa \index{variabili!globali} la
+variabile globale \var{errno},\footnote{l'uso di una variabile globale può
+  comportare alcuni problemi (ad esempio nel caso dei \itindex{thread}
+  \textit{thread}) ma lo standard ISO C consente anche di definire \var{errno}
+  come un \textit{modifiable lvalue}, quindi si può anche usare una macro, e
+  questo è infatti il modo usato da Linux per renderla locale ai singoli
   \itindex{thread} \textit{thread}.}  definita nell'header \file{errno.h}; la
 variabile è in genere definita come \direct{volatile} dato che può essere
 cambiata in modo asincrono da un segnale (si veda sez.~\ref{sec:sig_sigchld}
   \itindex{thread} \textit{thread}.}  definita nell'header \file{errno.h}; la
 variabile è in genere definita come \direct{volatile} dato che può essere
 cambiata in modo asincrono da un segnale (si veda sez.~\ref{sec:sig_sigchld}
@@ -2579,16 +2580,17 @@ riferiscono all'ultimo errore avvenuto. La stringa specificata con
 \param{message} viene stampato prima del messaggio d'errore, seguita dai due
 punti e da uno spazio, il messaggio è terminato con un a capo.
 
 \param{message} viene stampato prima 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 le due variabili globali:
+Il messaggio può essere riportato anche usando le due
+\index{variabili!globali} variabili globali:
 \includecodesnip{listati/errlist.c} 
 dichiarate in \file{errno.h}. La prima contiene i puntatori alle stringhe di
 errore indicizzati da \var{errno}; la seconda esprime il valore più alto per
 un codice di errore, l'utilizzo di questa stringa è sostanzialmente
 equivalente a quello di \func{strerror}.
 
 \includecodesnip{listati/errlist.c} 
 dichiarate in \file{errno.h}. La prima contiene i puntatori alle stringhe di
 errore indicizzati da \var{errno}; la seconda esprime il valore più alto per
 un codice di errore, l'utilizzo di questa stringa è sostanzialmente
 equivalente a quello di \func{strerror}.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/errcode_mess.c}
   \end{minipage}
   \normalsize
     \includecodesample{listati/errcode_mess.c}
   \end{minipage}
   \normalsize
@@ -2648,8 +2650,9 @@ l'argomento \param{format} prende la stessa sintassi di \func{printf}, ed i
 relativi argomenti devono essere forniti allo stesso modo, mentre
 \param{errnum} indica l'errore che si vuole segnalare (non viene quindi usato
 il valore corrente di \var{errno}); la funzione stampa sullo standard error il
 relativi argomenti devono essere forniti allo stesso modo, mentre
 \param{errnum} indica l'errore che si vuole segnalare (non viene quindi usato
 il valore corrente di \var{errno}); la funzione stampa sullo standard error il
-nome del programma, come indicato dalla variabile globale \var{program\_name},
-seguito da due punti ed uno spazio, poi dalla stringa generata da
+nome del programma, come indicato dalla \index{variabili!globali} variabile
+globale \var{program\_name}, seguito da due punti ed uno spazio, poi dalla
+stringa generata da
 \param{format} e dagli argomenti seguenti, seguita da due punti ed uno spazio
 infine il messaggio di errore relativo ad \param{errnum}, il tutto è terminato
 da un a capo.
 \param{format} e dagli argomenti seguenti, seguita da due punti ed uno spazio
 infine il messaggio di errore relativo ad \param{errnum}, il tutto è terminato
 da un a capo.
@@ -2663,8 +2666,8 @@ L'argomento \param{status} può essere usato per terminare direttamente il
 programma in caso di errore, nel qual caso \func{error} dopo la stampa del
 messaggio di errore chiama \func{exit} con questo stato di uscita. Se invece
 il valore è nullo \func{error} ritorna normalmente ma viene incrementata
 programma in caso di errore, nel qual caso \func{error} dopo la stampa del
 messaggio di errore chiama \func{exit} con questo stato di uscita. Se invece
 il valore è nullo \func{error} ritorna normalmente ma viene incrementata
-un'altra variabile globale, \var{error\_message\_count}, che tiene conto di
-quanti errori ci sono stati.
+un'altra \index{variabili!globali} variabile globale,
+\var{error\_message\_count}, che tiene conto di quanti errori ci sono stati.
 
 Un'altra funzione per la stampa degli errori, ancora più sofisticata, che
 prende due argomenti aggiuntivi per indicare linea e file su cui è avvenuto
 
 Un'altra funzione per la stampa degli errori, ancora più sofisticata, che
 prende due argomenti aggiuntivi per indicare linea e file su cui è avvenuto
@@ -2680,9 +2683,10 @@ Stampa un messaggio di errore formattato.
 \noindent ed il suo comportamento è identico a quello di \func{error} se non
 per il fatto che, separati con il solito due punti-spazio, vengono inseriti un
 nome di file indicato da \param{fname} ed un numero di linea subito dopo la
 \noindent ed il suo comportamento è identico a quello di \func{error} se non
 per il fatto che, separati con il solito due punti-spazio, vengono inseriti un
 nome di file indicato da \param{fname} ed un numero di linea subito dopo la
-stampa del nome del programma. Inoltre essa usa un'altra variabile globale,
-\var{error\_one\_per\_line}, che impostata ad un valore diverso da zero fa si
-che errori relativi alla stessa linea non vengano ripetuti.
+stampa del nome del programma. Inoltre essa usa un'altra
+\index{variabili!globali} variabile globale, \var{error\_one\_per\_line}, che
+impostata ad un valore diverso da zero fa si che errori relativi alla stessa
+linea non vengano ripetuti.
 
 
 % LocalWords:  filesystem like kernel saved header limits sysconf sez tab float
 
 
 % LocalWords:  filesystem like kernel saved header limits sysconf sez tab float