Correzioni all'uso improprio di \macro
[gapil.git] / system.tex
index 64ac8c9e36897a252f6b8e66c21ba7534509f716..a8852c09dc4ed08bebf2226f4eb9588fbf07fb47 100644 (file)
@@ -1,3 +1,13 @@
+%% system.tex
+%%
+%% Copyright (C) 2000-2002 Simone Piccardi.  Permission is granted to
+%% copy, distribute and/or modify this document under the terms of the GNU Free
+%% Documentation License, Version 1.1 or any later version published by the
+%% Free Software Foundation; with the Invariant Sections being "Prefazione",
+%% with no Front-Cover Texts, and with no Back-Cover Texts.  A copy of the
+%% license is included in the section entitled "GNU Free Documentation
+%% License".
+%%
 \chapter{La gestione del sistema, delle risorse, e degli errori}
 \label{cha:system}
 
@@ -10,7 +20,7 @@ e degli errori.
 
 
 
-\section{La lettura delle caratteristiche del sistema}
+\section{Capacità e caratteristiche del sistema}
 \label{sec:sys_characteristics}
 
 In questa sezione tratteremo le varie modalità con cui un programma può
@@ -21,11 +31,11 @@ l'architettura hardware, l'implementazione del kernel e delle librerie, le
 opzioni di configurazione.
 
 La definizione di queste caratteristiche ed il tentativo di provvedere dei
-meccanismi generali che i programmi potessero usare per ricavarle è uno degli
+meccanismi generali che i programmi possono usare per ricavarle è uno degli
 aspetti più complessi e controversi con cui le diverse standardizzazioni si
 sono dovute confrontare, spesso con risultati spesso tutt'altro che chiari.
-Proveremo comunque a dare una descrizione dei principali metodi previsti dai
-vari standard per ricavare sia le caratteristiche specifiche del sistema, che
+Daremo comunque una descrizione dei principali metodi previsti dai vari
+standard per ricavare sia le caratteristiche specifiche del sistema, che
 quelle della gestione dei file.
 
 
@@ -388,19 +398,20 @@ riportate in \tabref{tab:sys_file_macro}.
 \begin{table}[htb]
   \centering
   \footnotesize
-  \begin{tabular}[c]{|l|r|p{8cm}|}
+  \begin{tabular}[c]{|l|r|l|}
     \hline
     \textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\
     \hline
     \hline                
-    \macro{NAME\_MAX}&  14  & lunghezza in byte di un nome di file. \\
-    \macro{PATH\_MAX}& 256  & lunghezza in byte di pathname.\\
-    \macro{PIPE\_BUF}&4096  & byte scrivibili atomicamente in una pipe\\
     \macro{LINK\_MAX}   &8  & numero massimo di link a un file\\
-    \macro{MAX\_CANON}&255  & spazio disponibile nella coda di input
-                              canonica del terminale\\
+    \macro{NAME\_MAX}&  14  & lunghezza in byte di un nome di file. \\
+    \macro{PATH\_MAX}& 256  & lunghezza in byte di un pathname.\\
+    \macro{PIPE\_BUF}&4096  & byte scrivibili atomicamente in una pipe
+                              (vedi \secref{sec:ipc_pipes}).\\
+    \macro{MAX\_CANON}&255  & dimensione di una riga di terminale in modo 
+                              canonico (vedi \secref{sec:term_design}).\\
     \macro{MAX\_INPUT}&255  & spazio disponibile nella coda di input 
-                              del terminale\\
+                              del terminale (vedi \secref{sec:term_design}).\\
     \hline                
   \end{tabular}
   \caption{Macro per i limiti sulle caratteristiche dei file.}
@@ -416,21 +427,20 @@ analoghe di \tabref{tab:sys_posix1_general}.
 \begin{table}[htb]
   \centering
   \footnotesize
-  \begin{tabular}[c]{|l|r|p{8cm}|}
+  \begin{tabular}[c]{|l|r|l|}
     \hline
     \textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\
     \hline
     \hline
-    \textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\
-    \macro{\_POSIX\_LINK\_MAX}   &8  & numero massimo di link a un file\\
-    \macro{\_POSIX\_MAX\_CANON}&255  & spazio disponibile nella coda di input
-                                       canonica del terminale\\
-    \macro{\_POSIX\_MAX\_INPUT}&255  & spazio disponibile nella coda di input 
-                                       del terminale\\
+    \macro{\_POSIX\_LINK\_MAX}   &8  & numero massimo di link a un file.\\
     \macro{\_POSIX\_NAME\_MAX}&  14  & lunghezza in byte di un nome di file. \\
-    \macro{\_POSIX\_PATH\_MAX}& 256  & lunghezza in byte di pathname.\\
+    \macro{\_POSIX\_PATH\_MAX}& 256  & lunghezza in byte di un pathname.\\
     \macro{\_POSIX\_PIPE\_BUF}& 512  & byte scrivibili atomicamente in una
-                                       pipe\\
+                                       pipe.\\
+    \macro{\_POSIX\_MAX\_CANON}&255  & dimensione di una riga di
+                                       terminale in modo canonico.\\
+    \macro{\_POSIX\_MAX\_INPUT}&255  & spazio disponibile nella coda di input 
+                                       del terminale.\\
 %    \macro{\_POSIX\_MQ\_OPEN\_MAX}&  8& \\
 %    \macro{\_POSIX\_MQ\_PRIO\_MAX}& 32& \\
 %    \macro{\_POSIX\_FD\_SETSIZE}& 16 & \\
@@ -569,8 +579,6 @@ sistema 
 l'implementazione è specifica di Linux; il suo prototipo è:
 \begin{functions}
 \headdecl{unistd.h}
-\headdecl{linux/unistd.h}
-\headdecl{linux/sysctl.h}
 \funcdecl{int sysctl(int *name, int nlen, void *oldval, size\_t *oldlenp, void
   *newval, size\_t newlen)}
 
@@ -579,13 +587,13 @@ Legge o scrive uno dei parametri di sistema.
 \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
   errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
-  \item[\macro{EPERM}] il processo non ha il permesso di accedere ad uno dei
-    componenti nel cammino specificato per il parametro, o non ha il permesso
-    di accesso al parametro nella modalità scelta.
+  \item[\macro{EPERM}] non si ha il permesso di accedere ad uno dei componenti
+    nel cammino specificato per il parametro, o di accedere al parametro nella
+    modalità scelta.
   \item[\macro{ENOTDIR}] non esiste un parametro corrispondente al nome
     \param{name}.
-  \item[\macro{EFAULT}] si è specificato \param{oldlenp} zero quando
-    \param{oldval} è non nullo. 
+%  \item[\macro{EFAULT}] si è specificato \param{oldlenp} zero quando
+%    \param{oldval} è non nullo. 
   \item[\macro{EINVAL}] o si è specificato un valore non valido per il
     parametro che si vuole impostare o lo spazio provvisto per il ritorno di un
     valore non è delle giuste dimensioni.
@@ -593,14 +601,19 @@ Legge o scrive uno dei parametri di sistema.
     quando non si è specificato sufficiente spazio per ricevere il valore di un
     parametro.
   \end{errlist}
+  ed inoltre \macro{EFAULT}.
 }
 \end{functions}
 
 I parametri a cui la funzione permettere di accedere sono organizzati in
-maniera gerarchica all'interno un albero; per accedere ad uno di essi occorre
-specificare un cammino attraverso i vari nodi dell'albero, in maniera analoga
-a come avviene per la risoluzione di un pathname (da cui l'uso alternativo del
-filesystem \file{/proc}, che vedremo dopo).
+maniera gerarchica all'interno un albero;\footnote{si tenga presente che
+  includendo solo \file{unistd.h}, saranno definiti solo i parametri generici;
+  dato che ce ne sono molti specifici dell'implementazione, nel caso di Linux
+  occorrerà includere anche i file \file{linux/unistd.h} e
+  \file{linux/sysctl.h}.} per accedere ad uno di essi occorre specificare un
+cammino attraverso i vari nodi dell'albero, in maniera analoga a come avviene
+per la risoluzione di un pathname (da cui l'uso alternativo del filesystem
+\file{/proc}, che vedremo dopo).
 
 Ciascun nodo dell'albero è identificato da un valore intero, ed il cammino che
 arriva ad identificare un parametro specifico è passato alla funzione
@@ -752,7 +765,7 @@ significativi sono un \textit{magic number}\footnote{cio
   riservata al \textit{magic number}.} mentre i 16 meno significativi sono
 usati per specificare le opzioni; essi sono usati come maschera binaria e
 vanno impostati con un OR aritmetico della costante \macro{MS\_MGC\_VAL} con i
-valori riportati in \ntab.
+valori riportati in \tabref{tab:sys_mount_flags}.
 
 \begin{table}[htb]
   \footnotesize
@@ -874,10 +887,10 @@ 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
-\ref{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 \macro{XXX\_SUPER\_MAGIC}, dove \macro{XXX} in genere è il
+\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]
@@ -1472,10 +1485,10 @@ struct rlimit {
 \end{figure}
 
 In genere il superamento di un limite comporta o l'emissione di un segnale o
-il fallimento della system call che lo ha provocato; per far leggere o impostare
-i limiti di utilizzo delle risorse da parte di un processo le \acr{glibc}
-prevedono due funzioni, \func{getrlimit} e \func{setrlimit}, i cui prototipi
-sono:
+il fallimento della system call che lo ha provocato; per far leggere o
+impostare i limiti di utilizzo delle risorse da parte di un processo le
+\acr{glibc} prevedono due funzioni, \func{getrlimit} e \func{setrlimit}, i cui
+prototipi sono:
 \begin{functions}
   \headdecl{sys/time.h} 
   \headdecl{sys/resource.h} 
@@ -2053,8 +2066,8 @@ essere ritrovato in \cite{glibc}.
 
 Il valore delle costanti per \var{mode} può essere anche espresso, secondo la
 sintassi specificata per la forma equivalente di questa funzione definita come
-\func{ntp\_adjtime}, utilizzando il prefisso \macro{MOD} al posto di
-\macro{ADJ}.
+\func{ntp\_adjtime}, utilizzando il prefisso \code{MOD} al posto di
+\code{ADJ}.
 
 \begin{table}[htb]
   \footnotesize
@@ -2260,30 +2273,30 @@ indefinito.
     \textbf{Modificatore} & \textbf{Esempio} & \textbf{Significato}\\
     \hline
     \hline
-    \macro{\%a}&\texttt{Wed}        & Nome del giorno, abbreviato.\\ 
-    \macro{\%A}&\texttt{Wednesday}  & Nome del giorno, completo.\\ 
-    \macro{\%b}&\texttt{Apr}        & Nome del mese, abbreviato.\\ 
-    \macro{\%B}&\texttt{April}      & Nome del mese, completo.\\ 
-    \macro{\%c}&\texttt{Wed Apr 24 18:40:50 2002}& Data e ora.\\ 
-    \macro{\%d}&\texttt{24}         & Giorno del mese.\\ 
-    \macro{\%H}&\texttt{18}         & Ora del giorno, da 0 a 24.\\ 
-    \macro{\%I}&\texttt{06}         & Ora del giorno, da 0 a 12.\\ 
-    \macro{\%j}&\texttt{114}        & Giorno dell'anno.\\ 
-    \macro{\%m}&\texttt{04}         & Mese dell'anno.\\ 
-    \macro{\%M}&\texttt{40}         & Minuto.\\ 
-    \macro{\%p}&\texttt{PM}         & AM/PM.\\ 
-    \macro{\%S}&\texttt{50}         & Secondo.\\ 
-    \macro{\%U}&\texttt{16}         & Settimana dell'anno (partendo dalla
-                                      domenica).\\ 
-    \macro{\%w}&\texttt{3}          & Giorno della settimana.  \\ 
-    \macro{\%W}&\texttt{16}         & Settimana dell'anno (partendo dal
-                                      lunedì).\\ 
-    \macro{\%x}&\texttt{04/24/02}   & La data.\\ 
-    \macro{\%X}&\texttt{18:40:50}   & L'ora.\\ 
-    \macro{\%y}&\texttt{02}         & Anno nel secolo.\\ 
-    \macro{\%Y}&\texttt{2002}       & Anno.\\ 
-    \macro{\%Z}&\texttt{CEST}       & Nome della \textit{timezone}.\\ 
-    \macro{\%\%}&\texttt{\%}        & Il carattere \%.\\ 
+    \var{\%a}&\texttt{Wed}        & Nome del giorno, abbreviato.\\ 
+    \var{\%A}&\texttt{Wednesday}  & Nome del giorno, completo.\\ 
+    \var{\%b}&\texttt{Apr}        & Nome del mese, abbreviato.\\ 
+    \var{\%B}&\texttt{April}      & Nome del mese, completo.\\ 
+    \var{\%c}&\texttt{Wed Apr 24 18:40:50 2002}& Data e ora.\\ 
+    \var{\%d}&\texttt{24}         & Giorno del mese.\\ 
+    \var{\%H}&\texttt{18}         & Ora del giorno, da 0 a 24.\\ 
+    \var{\%I}&\texttt{06}         & Ora del giorno, da 0 a 12.\\ 
+    \var{\%j}&\texttt{114}        & Giorno dell'anno.\\ 
+    \var{\%m}&\texttt{04}         & Mese dell'anno.\\ 
+    \var{\%M}&\texttt{40}         & Minuto.\\ 
+    \var{\%p}&\texttt{PM}         & AM/PM.\\ 
+    \var{\%S}&\texttt{50}         & Secondo.\\ 
+    \var{\%U}&\texttt{16}         & Settimana dell'anno (partendo dalla
+                                    domenica).\\ 
+    \var{\%w}&\texttt{3}          & Giorno della settimana.  \\ 
+    \var{\%W}&\texttt{16}         & Settimana dell'anno (partendo dal
+                                    lunedì).\\ 
+    \var{\%x}&\texttt{04/24/02}   & La data.\\ 
+    \var{\%X}&\texttt{18:40:50}   & L'ora.\\ 
+    \var{\%y}&\texttt{02}         & Anno nel secolo.\\ 
+    \var{\%Y}&\texttt{2002}       & Anno.\\ 
+    \var{\%Z}&\texttt{CEST}       & Nome della \textit{timezone}.\\ 
+    \var{\%\%}&\texttt{\%}        & Il carattere \%.\\ 
     \hline
   \end{tabular}
   \caption{Valori previsti dallo standard ANSI C per modificatore della
@@ -2340,7 +2353,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
-\macro{E} e si possono considerare come nomi riservati. In seguito faremo
+\var{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}.