Revisione delle costanti di sistema, aggiunta funzione ctermid
authorSimone Piccardi <piccardi@gnulinux.it>
Sat, 12 Oct 2002 21:37:27 +0000 (21:37 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sat, 12 Oct 2002 21:37:27 +0000 (21:37 +0000)
ipc.tex
session.tex
system.tex

diff --git a/ipc.tex b/ipc.tex
index 916a27c58855851a26021e1cdb749a1844ce22b1..aa6893c01586c2841dd3244df2550eca7dec8826 100644 (file)
--- a/ipc.tex
+++ b/ipc.tex
@@ -56,7 +56,7 @@ accennato concetto di funzionamento di una pipe 
 scrive nel file descriptor aperto in scrittura viene ripresentato tale e quale
 nel file descriptor aperto in lettura. I file descriptor infatti non sono
 connessi a nessun file reale, ma ad un buffer nel kernel, la cui dimensione è
 scrive nel file descriptor aperto in scrittura viene ripresentato tale e quale
 nel file descriptor aperto in lettura. I file descriptor infatti non sono
 connessi a nessun file reale, ma ad un buffer nel kernel, la cui dimensione è
-specificata dalla costante \macro{PIPE\_BUF}, (vedi
+specificata dal parametro di sistema \macro{PIPE\_BUF}, (vedi
 \secref{sec:sys_file_limits}). Lo schema di funzionamento di una pipe è
 illustrato in \figref{fig:ipc_pipe_singular}, in cui sono illustrati i due
 capi della pipe, associati a ciascun file descriptor, con le frecce che
 \secref{sec:sys_file_limits}). Lo schema di funzionamento di una pipe è
 illustrato in \figref{fig:ipc_pipe_singular}, in cui sono illustrati i due
 capi della pipe, associati a ciascun file descriptor, con le frecce che
index ef1c26a67d197b852bfcd3fb8bf0e1773774dc3e..ebae61eea60e90e1f2d8d39a3922f55cc013c064 100644 (file)
@@ -959,17 +959,17 @@ kernel.
 
 La coda di ingresso mantiene i caratteri che sono stati letti dal terminale ma
 non ancora letti da un processo, la sua dimensione è definita dal parametro di
 
 La coda di ingresso mantiene i caratteri che sono stati letti dal terminale ma
 non ancora letti da un processo, la sua dimensione è definita dal parametro di
-sistema \macro{MAX\_INPUT}, che ne specifica il limite minimo, in realtà la
-coda può essere più grande e cambiare dimensione dinamicamente. Se è stato
-abilitato il controllo di flusso in ingresso il driver emette i caratteri di
-STOP e START per bloccare e sbloccare l'ingresso dei dati; altrimenti i
-caratteri immessi oltre le dimensioni massime vengono persi; in alcuni casi il
-driver provvede ad inviare automaticamente un avviso (un carattere di BELL,
-che provoca un beep) sull'output quando si eccedono le dimensioni della coda.
-Se è abilitato il modo canonico i caratteri in ingresso restano nella coda
-fintanto che non viene ricevuto un a capo; un'altra costante,
-\macro{MAX\_CANON}, specifica la dimensione massima di una riga in modo
-canonico.
+sistema \macro{MAX\_INPUT} (si veda \secref{sec:sys_file_limits}), che ne
+specifica il limite minimo, in realtà la coda può essere più grande e cambiare
+dimensione dinamicamente. Se è stato abilitato il controllo di flusso in
+ingresso il driver emette i caratteri di STOP e START per bloccare e sbloccare
+l'ingresso dei dati; altrimenti i caratteri immessi oltre le dimensioni
+massime vengono persi; in alcuni casi il driver provvede ad inviare
+automaticamente un avviso (un carattere di BELL, che provoca un beep)
+sull'output quando si eccedono le dimensioni della coda.  Se è abilitato il
+modo canonico i caratteri in ingresso restano nella coda fintanto che non
+viene ricevuto un a capo; un'altra parametro del sistema, \macro{MAX\_CANON},
+specifica la dimensione massima di una riga in modo canonico.
 
 La coda di uscita è analoga a quella di ingresso e contiene i caratteri
 scritti dai processi ma non ancora inviati al terminale. Se è abilitato il
 
 La coda di uscita è analoga a quella di ingresso e contiene i caratteri
 scritti dai processi ma non ancora inviati al terminale. Se è abilitato il
@@ -992,8 +992,8 @@ System V in una unica interfaccia, che 
 Alcune di queste funzioni prendono come argomento un file descriptor (in
 origine molte operazioni venivano effettuate con \func{ioctl}), ma ovviamente
 possono essere usate solo con file che corrispondano effettivamente ad un
 Alcune di queste funzioni prendono come argomento un file descriptor (in
 origine molte operazioni venivano effettuate con \func{ioctl}), ma ovviamente
 possono essere usate solo con file che corrispondano effettivamente ad un
-terminale; questo che può essere verificato utilizzando la funzione
-\func{isatty}, il cui prototipo è:
+terminale (altrimenti si otterrà un errore di \macro{ENOTTY}); questo può
+essere evitato utilizzando la funzione \func{isatty}, il cui prototipo è:
 \begin{prototype}{unistd.h}{int isatty(int desc)}
   
   Controlla se il file descriptor \param{desc} è un terminale.
 \begin{prototype}{unistd.h}{int isatty(int desc)}
   
   Controlla se il file descriptor \param{desc} è un terminale.
@@ -1003,7 +1003,7 @@ terminale; questo che pu
 \end{prototype}
 
 Un'altra funzione che fornisce informazioni su un terminale è \func{ttyname},
 \end{prototype}
 
 Un'altra funzione che fornisce informazioni su un terminale è \func{ttyname},
-che permette anche di ottenere il nome del terminale associato ad un file
+che permette di ottenere il nome del terminale associato ad un file
 descriptor; il suo prototipo è:
 \begin{prototype}{unistd.h}{char *ttyname(int desc)}
   
 descriptor; il suo prototipo è:
 \begin{prototype}{unistd.h}{char *ttyname(int desc)}
   
@@ -1015,8 +1015,31 @@ descriptor; il suo prototipo 
 \end{prototype}
 
 Si tenga presente che la funzione restituisce un indirizzo di dati statici,
 \end{prototype}
 
 Si tenga presente che la funzione restituisce un indirizzo di dati statici,
-che pertanto possono essere sovrascritti da successive chiamate. La funzione è
-prevista da POSIX.1, che non definisce \func{isatty}.
+che pertanto possono essere sovrascritti da successive chiamate. Una funzione
+funzione analoga, anch'essa prevista da POSIX.1, è \func{ctermid}, il cui
+prototipo è:
+\begin{prototype}{stdio.h}{char *ctermid(char *s)}
+  
+  Restituisce il nome del terminale di controllo del processo.
+  
+  \bodydesc{La funzione restituisce il puntatore alla stringa contenente il
+    pathname del terminale.}
+\end{prototype}
+
+La funzione scrive il pathname del terminale di controllo del processo
+chiamante nella stringa posta all'indirizzo specificato dall'argomento
+\param{s}.  La memoria per contenere la stringa deve essere stata allocata in
+precedenza ed essere lunga almeno
+\macro{L\_ctermid}\footnote{\macro{L\_ctermid} è una delle varie costanti del
+  sistema, non trattata esplicitamente in \secref{sec:sys_characteristics} che
+  indica la dimensione che deve avere una stringa per poter contenere il nome
+  di un terminale.} caratteri.
+
+Se si passa come argomento \macro{NULL} la funzione restituisce il puntatore
+ad una stringa statica che può essere sovrascritta da chiamate successive. Si
+tenga presente che il pathname restituito potrebbe non identificare
+univocamente il terminale (ad esempio potrebbe essere \file{/dev/tty}),
+inoltre non è detto che il processo possa effettivamente aprire il terminale.
 
 I vari attributi vengono mantenuti per ciascun terminale in una struttura
 \var{termios}, (la cui definizione è in \figref{fig:term_termios}), usata
 
 I vari attributi vengono mantenuti per ciascun terminale in una struttura
 \var{termios}, (la cui definizione è in \figref{fig:term_termios}), usata
@@ -1053,7 +1076,7 @@ modificare i bit su cui non si interviene.
 \begin{table}[b!ht]
   \footnotesize
   \centering
 \begin{table}[b!ht]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|p{13cm}|}
+  \begin{tabular}[c]{|l|p{11cm}|}
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
@@ -1146,7 +1169,7 @@ pseudo-terminali usati nelle connessioni di rete.
 \begin{table}[htb]
   \footnotesize
   \centering
 \begin{table}[htb]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|p{13cm}|}
+  \begin{tabular}[c]{|l|p{11cm}|}
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
@@ -1229,7 +1252,7 @@ valore.
 \begin{table}[htb]
   \footnotesize
   \centering
 \begin{table}[htb]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|p{13cm}|}
+  \begin{tabular}[c]{|l|p{11cm}|}
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
@@ -1306,12 +1329,12 @@ funzioni di lettura e scrittura) che mantengono le velocit
 seriali all'interno dei flag; come accennato in Linux questo viene fatto
 (seguendo l'esempio di BSD) attraverso due campi aggiuntivi, \var{c\_ispeed} e
 \var{c\_ospeed}, nella struttura \var{termios} (non mostrati in
 seriali all'interno dei flag; come accennato in Linux questo viene fatto
 (seguendo l'esempio di BSD) attraverso due campi aggiuntivi, \var{c\_ispeed} e
 \var{c\_ospeed}, nella struttura \var{termios} (non mostrati in
-\secref{fig:term_termios}).
+\figref{fig:term_termios}).
 
 \begin{table}[b!ht]
   \footnotesize
   \centering
 
 \begin{table}[b!ht]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|p{13cm}|}
+  \begin{tabular}[c]{|l|p{11cm}|}
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
@@ -1412,7 +1435,7 @@ altri.\footnote{in Linux il valore della costante 
 \begin{table}[htb]
   \footnotesize
   \centering
 \begin{table}[htb]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|c|c|p{9cm}|}
+  \begin{tabular}[c]{|l|c|c|p{8cm}|}
     \hline
     \textbf{Indice} & \textbf{Valore}&\textbf{Codice} & \textbf{Funzione}\\
     \hline
     \hline
     \textbf{Indice} & \textbf{Valore}&\textbf{Codice} & \textbf{Funzione}\\
     \hline
@@ -1691,7 +1714,7 @@ sono:
     caso di errore, che avviene solo quando il valore specificato non è
     valido.}
 \end{functions}
     caso di errore, che avviene solo quando il valore specificato non è
     valido.}
 \end{functions}
-
 Si noti che le funzioni si limitano a scrivere opportunamente il valore della
 velocità prescelta \var{speed} all'interno della struttura puntata da
 \var{termios\_p}; per effettuare l'impostazione effettiva occorrerà poi
 Si noti che le funzioni si limitano a scrivere opportunamente il valore della
 velocità prescelta \var{speed} all'interno della struttura puntata da
 \var{termios\_p}; per effettuare l'impostazione effettiva occorrerà poi
@@ -1713,7 +1736,7 @@ velocit
 Un terminale può utilizzare solo alcune delle velocità possibili, le funzioni
 però non controllano se il valore specificato è valido, dato che non possono
 sapere a quale terminale le velocità saranno applicate; sarà l'esecuzione di
 Un terminale può utilizzare solo alcune delle velocità possibili, le funzioni
 però non controllano se il valore specificato è valido, dato che non possono
 sapere a quale terminale le velocità saranno applicate; sarà l'esecuzione di
-\finc{tcsetattr} a fallire quando si cercherà di eseguire l'impostazione.
+\func{tcsetattr} a fallire quando si cercherà di eseguire l'impostazione.
 
 Di norma il valore ha senso solo per i terminali seriali dove indica appunto
 la velocità della linea di trasmissione; se questa non corrisponde a quella
 
 Di norma il valore ha senso solo per i terminali seriali dove indica appunto
 la velocità della linea di trasmissione; se questa non corrisponde a quella
@@ -1787,7 +1810,9 @@ La funzione invia un flusso di bit nulli (che genera una condizione di break)
 sul terminale associato a \param{fd}; un valore nullo di \param{duration}
 implica una durata del flusso fra 0.25 e 0.5 secondi, un valore diverso da
 zero implica una durata pari a \code{duration*T} dove \code{T} è un valore
 sul terminale associato a \param{fd}; un valore nullo di \param{duration}
 implica una durata del flusso fra 0.25 e 0.5 secondi, un valore diverso da
 zero implica una durata pari a \code{duration*T} dove \code{T} è un valore
-compreso fra 0.25 e 0.5.
+compreso fra 0.25 e 0.5.\footnote{POSIX specifica il comportamento solo nel
+  caso si sia impostato un valore nullo per \param{duration}; il comportamento
+  negli altri casi può dipendere dalla implementazione.}
 
 Le altre funzioni previste da POSIX servono a controllare il comportamento
 dell'interazione fra le code associate al terminale e l'utente; la prima è
 
 Le altre funzioni previste da POSIX servono a controllare il comportamento
 dell'interazione fra le code associate al terminale e l'utente; la prima è
@@ -1811,7 +1836,7 @@ di uscita non 
                                 % gestori di cancellazione. 
 
 Una seconda funzione, \func{tcflush}, permette svuotare immediatamente le code
                                 % gestori di cancellazione. 
 
 Una seconda funzione, \func{tcflush}, permette svuotare immediatamente le code
-di cancellando tutti i dati presenti; il suo prototipo è:
+di cancellando tutti i dati presenti al loro interno; il suo prototipo è:
 \begin{functions}
   \headdecl{unistd.h} \headdecl{termios.h}
   
 \begin{functions}
   \headdecl{unistd.h} \headdecl{termios.h}
   
@@ -1823,10 +1848,12 @@ di cancellando tutti i dati presenti; il suo prototipo 
     \macro{ENOTTY}.}
 \end{functions}
 
     \macro{ENOTTY}.}
 \end{functions}
 
-La funzione agisce sul terminale associato a \param{fd}, cancellando tutti i
-dati presenti sulla coda specificata dall'argomento \param{queue},
-quest'ultimo può prendere i valori riportati in
-\tabref{tab:sess_tcflush_queue}.
+La funzione agisce sul terminale associato a \param{fd}, l'argomento
+\param{queue} permette di specificare su quale coda (ingresso, uscita o
+entrambe), operare. Esso può prendere i valori riportati in
+\tabref{tab:sess_tcflush_queue}, nel caso si specifichi la coda di ingresso
+cancellerà i dati ricevuti ma non ancora letti, nel caso si specifichi la coda
+di uscita cancellerài dati scritti ma non ancora trasmessi.
 
 \begin{table}[htb]
   \footnotesize
 
 \begin{table}[htb]
   \footnotesize
@@ -1836,9 +1863,9 @@ quest'ultimo pu
     \textbf{Valore}& \textbf{Significato}\\
     \hline
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
     \hline
-    \macro{TCIFLUSH} & Cancella i dati ricevuti ma non ancora letti. \\
-    \macro{TCOFLUSH} & Cancella i dati scritti ma non ancora trasmessi. \\
-    \macro{TCIOFLUSH}& Cancella tutte e due le code.\\
+    \macro{TCIFLUSH} & Cancella i dati sulla coda di ingresso. \\
+    \macro{TCOFLUSH} & Cancella i dati sulla coda di uscita. \\
+    \macro{TCIOFLUSH}& Cancella i dati su entrambe le code.\\
     \hline
   \end{tabular}
   \caption{Possibili valori per l'argomento \param{queue} della
     \hline
   \end{tabular}
   \caption{Possibili valori per l'argomento \param{queue} della
@@ -1847,53 +1874,56 @@ quest'ultimo pu
 \end{table}
 
 
 \end{table}
 
 
-Infine è possibile è possibile sospendere la trasmissione e la ricezione dei
-dati sul terminale usando \func{tcflow}; il suo prototipo è:
+L'ultima funzione dell'interfaccia che interviene sulla disciplina di linea è
+\func{tcflow}, che viene usata per sospendere la trasmissione e la ricezione
+dei dati sul terminale; il suo prototipo è:
 \begin{functions}
   \headdecl{unistd.h} 
   \headdecl{termios.h}  
   
 \begin{functions}
   \headdecl{unistd.h} 
   \headdecl{termios.h}  
   
-  \funcdecl{int tcflow(int fd, int action)} .
+  \funcdecl{int tcflow(int fd, int action)} 
   
   
+  Sospende e rivvia il flusso dei dati sul terminale.
+
   \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
     errore, nel qual caso \var{errno} assumerà i valori \macro{EBADF} o
     \macro{ENOTTY}.}
 \end{functions}
 
   \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
     errore, nel qual caso \var{errno} assumerà i valori \macro{EBADF} o
     \macro{ENOTTY}.}
 \end{functions}
 
+La funzione permette di controllare (interrompendo e facendo riprendere) il
+flusso dei dati fra il terminale ed il sistema sia in ingresso che in uscita.
+Il comportamento della funzione è regolato dall'argomento \param{action}, i
+cui possibili valori, e relativa azione eseguita dalla funzione, sono
+riportati in \secref{tab:sess_tcflow_action}.
 
 \begin{table}[htb]
   \footnotesize
   \centering
   \begin{tabular}[c]{|l|p{8cm}|}
     \hline
 
 \begin{table}[htb]
   \footnotesize
   \centering
   \begin{tabular}[c]{|l|p{8cm}|}
     \hline
-    \textbf{Valore}& \textbf{Significato}\\
+    \textbf{Valore}& \textbf{Azione}\\
     \hline
     \hline
     \hline
     \hline
-    \macro{TCOOFF} & Cancella i dati ricevuti ma non ancora letti. \\
-    \macro{TCOON} & Cancella i dati scritti ma non ancora trasmessi. \\
-    \macro{TCIOFF}& Cancella tutte e due le code.\\
-    \macro{TCION}& Cancella tutte e due le code.\\
+    \macro{TCOOFF}& Sospende l'output.\\
+    \macro{TCOON} & Riprende un output precedentemente sospeso.\\
+    \macro{TCIOFF}& Il sistema trasmette un carattere di STOP, che 
+                    fa interrompere la trasmissione dei dati dal terminale.  \\
+    \macro{TCION} & Il sistema trasmette un carattere di START, che 
+                    fa riprendere la trasmissione dei dati dal terminale.\\
     \hline
   \end{tabular}
     \hline
   \end{tabular}
-  \caption{Possibili valori per l'argomento \param{queue} della
-    funzione \func{tcflush}.} 
-  \label{tab:sess_tcflush_queue}
+  \caption{Possibili valori per l'argomento \param{action} della
+    funzione \func{tcflow}.} 
+  \label{tab:sess_tcflow_action}
 \end{table}
 
 
 \end{table}
 
 
-\subsection{Il \textsl{modo canonico}}
-\label{sec:term_canonic_mode}
-
-Il modo canonico
-
-
-\subsection{Il \textsl{modo non canonico}}
-\label{sec:term_noncanonic_mode}
+\subsection{Il \textsl{modo canonico} ed il \textsl{modo non canonico}}
+\label{sec:term_terminal_modes}
 
 Il modo non canonico
 
 
 Il modo non canonico
 
-
-
 
 %%% Local Variables: 
 %%% mode: latex
 
 %%% Local Variables: 
 %%% mode: latex
index 64ac8c9e36897a252f6b8e66c21ba7534509f716..310cd85d9236dbb81af68763d52ab5bdae5a3887 100644 (file)
@@ -10,7 +10,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ò
 \label{sec:sys_characteristics}
 
 In questa sezione tratteremo le varie modalità con cui un programma può
@@ -21,11 +21,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
 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.
 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.
 
 
 quelle della gestione dei file.
 
 
@@ -388,19 +388,20 @@ riportate in \tabref{tab:sys_file_macro}.
 \begin{table}[htb]
   \centering
   \footnotesize
 \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                
     \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{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 
     \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.}
     \hline                
   \end{tabular}
   \caption{Macro per i limiti sulle caratteristiche dei file.}
@@ -416,21 +417,20 @@ analoghe di \tabref{tab:sys_posix1_general}.
 \begin{table}[htb]
   \centering
   \footnotesize
 \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
     \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\_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
     \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 & \\
 %    \macro{\_POSIX\_MQ\_OPEN\_MAX}&  8& \\
 %    \macro{\_POSIX\_MQ\_PRIO\_MAX}& 32& \\
 %    \macro{\_POSIX\_FD\_SETSIZE}& 16 & \\
@@ -569,8 +569,6 @@ sistema 
 l'implementazione è specifica di Linux; il suo prototipo è:
 \begin{functions}
 \headdecl{unistd.h}
 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)}
 
 \funcdecl{int sysctl(int *name, int nlen, void *oldval, size\_t *oldlenp, void
   *newval, size\_t newlen)}
 
@@ -579,13 +577,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}
 \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{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.
   \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 +591,19 @@ Legge o scrive uno dei parametri di sistema.
     quando non si è specificato sufficiente spazio per ricevere il valore di un
     parametro.
   \end{errlist}
     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
 }
 \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
 
 Ciascun nodo dell'albero è identificato da un valore intero, ed il cammino che
 arriva ad identificare un parametro specifico è passato alla funzione