Correzione dimenticata
[gapil.git] / process.tex
index b25c6582a1db27571ba476e832190f6f73807e1c..9322dae960d2f785056fd9e62a8b844aef37e438 100644 (file)
@@ -1,6 +1,6 @@
 %% process.tex
 %%
-%% Copyright (C) 2000-2015 by Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2016 by 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 "Un preambolo",
@@ -213,27 +213,28 @@ definizioni.
     & ANSI C& POSIX& \\
     \hline
     \hline
-    \headfile{assert.h}&$\bullet$&    --   & Verifica le asserzioni fatte in un
-                                             programma.\\ 
-    \headfile{ctype.h} &$\bullet$&    --   & Tipi standard.\\
-    \headfile{dirent.h}&   --    &$\bullet$& Manipolazione delle directory.\\
-    \headfile{errno.h} &   --    &$\bullet$& Errori di sistema.\\
-    \headfile{fcntl.h} &   --    &$\bullet$& Controllo sulle opzioni dei file.\\
-    \headfile{limits.h}&   --    &$\bullet$& Limiti e parametri del sistema.\\
-    \headfile{malloc.h}&$\bullet$&    --   & Allocazione della memoria.\\
-    \headfile{setjmp.h}&$\bullet$&    --   & Salti non locali.\\
-    \headfile{signal.h}&   --    &$\bullet$& Gestione dei segnali.\\
-    \headfile{stdarg.h}&$\bullet$&    --   & Gestione di funzioni a argomenti
+    \headfiled{assert.h}&$\bullet$&    --   & Verifica le asserzioni fatte in un
+                                              programma.\\ 
+    \headfiled{ctype.h} &$\bullet$&    --   & Tipi standard.\\
+    \headfiled{dirent.h}&   --    &$\bullet$& Manipolazione delle directory.\\
+    \headfiled{errno.h} &   --    &$\bullet$& Errori di sistema.\\
+    \headfiled{fcntl.h} &   --    &$\bullet$& Controllo sulle opzioni dei
+                                              file.\\ 
+    \headfiled{limits.h}&   --    &$\bullet$& Limiti e parametri del sistema.\\
+    \headfiled{malloc.h}&$\bullet$&    --   & Allocazione della memoria.\\
+    \headfiled{setjmp.h}&$\bullet$&    --   & Salti non locali.\\
+    \headfiled{signal.h}&   --    &$\bullet$& Gestione dei segnali.\\
+    \headfiled{stdarg.h}&$\bullet$&    --   & Gestione di funzioni a argomenti
                                              variabili.\\ 
-    \headfile{stdio.h} &$\bullet$&    --   & I/O bufferizzato in standard ANSI
-                                             C.\\ 
-    \headfile{stdlib.h}&$\bullet$&    --   & Definizioni della libreria
-                                             standard.\\ 
-    \headfile{string.h}&$\bullet$&    --   & Manipolazione delle stringhe.\\
-    \headfile{time.h}  &   --    &$\bullet$& Gestione dei tempi.\\
-    \headfile{times.h} &$\bullet$&    --   & Gestione dei tempi.\\
-    \headfile{unistd.h}&   --    &$\bullet$& Unix standard library.\\
-    \headfile{utmp.h}  &   --    &$\bullet$& Registro connessioni utenti.\\
+    \headfiled{stdio.h} &$\bullet$&    --   & I/O bufferizzato in standard ANSI
+                                              C.\\ 
+    \headfiled{stdlib.h}&$\bullet$&    --   & Definizioni della libreria
+                                              standard.\\ 
+    \headfiled{string.h}&$\bullet$&    --   & Manipolazione delle stringhe.\\
+    \headfiled{time.h}  &   --    &$\bullet$& Gestione dei tempi.\\
+    \headfiled{times.h} &$\bullet$&    --   & Gestione dei tempi.\\
+    \headfiled{unistd.h}&   --    &$\bullet$& Unix standard library.\\
+    \headfiled{utmp.h}  &   --    &$\bullet$& Registro connessioni utenti.\\
     \hline
   \end{tabular}
   \caption{Elenco dei principali \textit{header file} definiti dagli standard
@@ -273,7 +274,7 @@ esempio si avrà che:
   ``\texttt{TC}'' e con ``\texttt{B}'' seguito da un numero,
 \item in \headfile{grp.h} vengono riservati i nomi che iniziano con
   ``\texttt{gr\_}'',
-\item in \headfile{pwd.h}vengono riservati i nomi che iniziano con
+\item in \headfile{pwd.h} vengono riservati i nomi che iniziano con
   ``\texttt{pw\_}'',
 \end{itemize*}
 
@@ -352,7 +353,7 @@ dall'architettura,\footnote{in genere le vecchie \textit{system call} non
 ciascuna \textit{system call} viene in genere identificata da una costante
 nella forma \texttt{SYS\_*} dove al prefisso viene aggiunto il nome che spesso
 corrisponde anche alla omonima funzione di libreria. Queste costanti sono
-definite nel file \headfile{sys/syscall.h}, ma si possono anche usare
+definite nel file \headfiled{sys/syscall.h}, ma si possono anche usare
 direttamente valori numerici.
 
 
@@ -1223,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
@@ -1422,6 +1423,9 @@ blocco. Con kernel diversi da Linux si può ottenere un errore di
 pagine di memoria, pertanto se si ha a cuore la portabilità si deve avere cura
 di allinearne correttamente il valore.
 
+% TODO trattare mlock2, introdotta con il kernel 4.4 (vedi
+% http://lwn.net/Articles/650538/)
+
 Altre due funzioni di sistema, \funcd{mlockall} e \funcd{munlockall},
 consentono di bloccare genericamente la paginazione per l'intero spazio di
 indirizzi di un processo.  I prototipi di queste funzioni sono:
@@ -2389,10 +2393,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}
 
@@ -2484,15 +2488,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
@@ -2597,7 +2601,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.
@@ -2686,6 +2690,10 @@ dichiarandole tutte come \direct{volatile}.\footnote{la direttiva
 \index{salto~non-locale|)}
 
 
+% TODO trattare qui le restartable sequences (vedi
+% https://lwn.net/Articles/664645/ e https://lwn.net/Articles/650333/) se e
+% quando saranno introdotte
+
 \subsection{La \textit{endianness}}
 \label{sec:endianness}