Altra documentazione sul log del kernel
[gapil.git] / process.tex
index dfb5d2bbf48922aaf9347b43e1fc4e38488d282c..2918deb1ee32f97121977ddab0fd9639e6445430 100644 (file)
@@ -1832,15 +1832,14 @@ sono definite delle apposite macro; la procedura da seguire è la seguente:
 \item Dichiarare la conclusione dell'estrazione degli argomenti invocando la
   macro \macro{va\_end}.
 \end{enumerate*}
+
 In generale è perfettamente legittimo richiedere meno argomenti di quelli che
 potrebbero essere stati effettivamente forniti, e nella esecuzione delle
 \macro{va\_arg} ci si può fermare in qualunque momento ed i restanti argomenti
 saranno ignorati; se invece si richiedono più argomenti di quelli forniti si
-otterranno dei valori indefiniti. Nel caso del \cmd{gcc} l'uso della macro
-\macro{va\_end} è inutile, ma si consiglia di usarlo ugualmente per
-compatibilità.
-
-Le definizioni delle tre macro sono le seguenti:
+otterranno dei valori indefiniti. Nel caso del \cmd{gcc} l'uso di
+\macro{va\_end} è inutile, ma si consiglia di usarla ugualmente per
+compatibilità. Le definizioni delle macro citate sono le seguenti:
 \begin{functions}
   \headdecl{stdarg.h}
   
@@ -1859,12 +1858,11 @@ Le definizioni delle tre macro sono le seguenti:
 
 In generale si possono avere più puntatori alla lista degli argomenti,
 ciascuno andrà inizializzato con \macro{va\_start} e letto con \macro{va\_arg}
-e ciascuno potrà scandire la lista degli argomenti per conto suo. 
-
-Dopo l'uso di \macro{va\_end} la variabile \param{ap} diventa indefinita e
-successive chiamate a \macro{va\_arg} non funzioneranno. Si avranno risultati
-indefiniti anche chiamando \macro{va\_arg} specificando un tipo che non
-corrisponde a quello dell'argomento.
+e ciascuno potrà scandire la lista degli argomenti per conto suo. Dopo l'uso
+di \macro{va\_end} la variabile \param{ap} diventa indefinita e successive
+chiamate a \macro{va\_arg} non funzioneranno. Si avranno risultati indefiniti
+anche chiamando \macro{va\_arg} specificando un tipo che non corrisponde a
+quello dell'argomento.
 
 Un altro limite delle macro è che i passi 1) e 3) devono essere eseguiti nel
 corpo principale della funzione, il passo 2) invece può essere eseguito anche
@@ -1874,13 +1872,12 @@ usato (lo standard richiederebbe la chiamata esplicita di \macro{va\_end}),
 dato che il valore di \param{ap} risulterebbe indefinito.
 
 Esistono dei casi in cui è necessario eseguire più volte la scansione degli
-argomenti e poter memorizzare una posizione durante la stessa.  La cosa più
-naturale in questo caso sembrerebbe quella di copiarsi il puntatore alla lista
-degli argomenti con una semplice assegnazione. Dato che una delle
-realizzazioni più comuni di \macro{va\_list} è quella di un puntatore nello
-\itindex{stack} \textit{stack} all'indirizzo dove sono stati salvati gli
-argomenti, è assolutamente normale pensare di poter effettuare questa
-operazione.
+argomenti e poter memorizzare una posizione durante la stessa. In questo caso
+sembrerebbe naturale copiarsi il puntatore alla lista degli argomenti con una
+semplice assegnazione. Dato che una delle realizzazioni più comuni di
+\macro{va\_list} è quella di un puntatore nello \itindex{stack} \textit{stack}
+all'indirizzo dove sono stati salvati gli argomenti, è assolutamente normale
+pensare di poter effettuare questa operazione.
 
 In generale però possono esistere anche realizzazioni diverse, per questo
 motivo \macro{va\_list} è definito come \index{tipo!opaco} \textsl{tipo opaco}
@@ -2050,7 +2047,7 @@ interagiscono direttamente con la gestione dello \itindex{stack}
 \func{setjmp} è implementata con una macro, pertanto non si può cercare di
 ottenerne l'indirizzo, ed inoltre delle chiamate a questa funzione sono sicure
 solo in uno dei seguenti casi:
-\begin{itemize}
+\begin{itemize*}
 \item come espressione di controllo in un comando condizionale, di selezione
   o di iterazione (come \code{if}, \code{switch} o \code{while});
 \item come operando per un operatore di uguaglianza o confronto in una
@@ -2059,11 +2056,12 @@ solo in uno dei seguenti casi:
 \item come operando per l'operatore di negazione (\code{!}) in una espressione
   di controllo di un comando condizionale, di selezione o di iterazione;
 \item come espressione a sé stante.
-\end{itemize}
+\end{itemize*}
 
 In generale, dato che l'unica differenza fra la chiamata diretta e quella
-ottenuta da un \func{longjmp} è costituita dal valore di ritorno di
-\func{setjmp}, essa è usualmente chiamata all'interno di un comando \code{if}.
+ottenuta nell'uscita con un \func{longjmp} è costituita dal valore di ritorno
+di \func{setjmp}, quest'ultima usualmente viene chiamata all'interno di un
+comando \code{if}.
 
 Uno dei punti critici dei salti non-locali è quello del valore delle
 variabili, ed in particolare quello delle variabili automatiche della funzione