Inizio della revisione del formato per la suddivisione in due parti,
[gapil.git] / process.tex
index d3fe9c504020b81433a0c5b6fd372e919a8d72cf..df94444f153016202640e3ac052cbac9c53ecb80 100644 (file)
@@ -851,27 +851,47 @@ però non è standardizzata da POSIX e pertanto non è disponibile su tutte le
 versioni di kernel unix-like;\footnote{nel caso di Linux devono essere
   comunque definite le macro \macro{\_BSD\_SOURCE} e \macro{\_SVID\_SOURCE}.}
 il suo prototipo è:
-\begin{functions}
-  \headdecl{unistd.h} 
-  \headdecl{sys/mman.h} 
+\begin{functions}
+  \headdecl{unistd.h} 
+  \headdecl{sys/mman.h} 
 
-  \funcdecl{int mincore(void *addr, size\_t length, unsigned char *vec)}
-  Ritorna lo stato delle pagine di memoria occupate da un processo.
+  \funcdecl{int mincore(void *addr, size\_t length, unsigned char *vec)}
+  Ritorna lo stato delle pagine di memoria occupate da un processo.
   
-  \bodydesc{La funzione ritorna 0 in caso di successo e $-1$ in caso di
-    errore, nel qual caso \var{errno} assumerà uno dei valori seguenti:
-  \begin{errlist}
-  \item[\errcode{ENOMEM}] o \param{addr} + \param{length} eccede la dimensione
-    della memoria usata dal processo o l'intervallo di indirizzi specificato
-    non è mappato.
-  \item[\errcode{EINVAL}] \param{addr} non è un multiplo delle dimensioni di
-    una pagina.
-  \item[\errcode{EFAULT}] \param{vec} punta ad un indirizzo non valido.
-  \item[\errcode{EAGAIN}] il kernel è temporaneamente non in grado di fornire
-    una risposta.
-  \end{errlist}
+%   \bodydesc{La funzione ritorna 0 in caso di successo e $-1$ in caso di
+%     errore, nel qual caso \var{errno} assumerà uno dei valori seguenti:
+%   \begin{errlist}
+%   \item[\errcode{ENOMEM}] o \param{addr} + \param{length} eccede la dimensione
+%     della memoria usata dal processo o l'intervallo di indirizzi specificato
+%     non è mappato.
+%   \item[\errcode{EINVAL}] \param{addr} non è un multiplo delle dimensioni di
+%     una pagina.
+%   \item[\errcode{EFAULT}] \param{vec} punta ad un indirizzo non valido.
+%   \item[\errcode{EAGAIN}] il kernel è temporaneamente non in grado di fornire
+%     una risposta.
+%   \end{errlist}
+% }
+% \end{functions}
+
+\begin{funcproto}{
+\fhead{unistd.h}
+\fhead{sys/mman.h}
+\fdecl{int mincore(void *addr, size\_t length, unsigned char *vec)}
+\fdesc{Ritorna lo stato delle pagine di memoria occupate da un processo.}
 }
-\end{functions}
+{La funzione ritorna 0 in caso di successo e $-1$ in caso di errore, nel qual
+caso \var{errno} assumerà uno dei valori seguenti:
+\begin{errlist}
+   \item[\errcode{ENOMEM}] o \param{addr} + \param{length} eccede la dimensione
+     della memoria usata dal processo o l'intervallo di indirizzi specificato
+     non è mappato.
+   \item[\errcode{EINVAL}] \param{addr} non è un multiplo delle dimensioni di
+     una pagina.
+   \item[\errcode{EFAULT}] \param{vec} punta ad un indirizzo non valido.
+   \item[\errcode{EAGAIN}] il kernel è temporaneamente non in grado di fornire
+     una risposta.
+\end{errlist}}
+\end{funcproto}
 
 La funzione permette di ottenere le informazioni sullo stato della mappatura
 della memoria per il processo chiamante, specificando l'intervallo da
@@ -960,16 +980,39 @@ fintanto che ci sarà almeno un processo che la blocca.
 Le funzioni per bloccare e sbloccare la \index{paginazione} paginazione di
 singole sezioni di memoria sono \funcd{mlock} e \funcd{munlock}; i loro
 prototipi sono:
-\begin{functions}
-  \headdecl{sys/mman.h} 
+\begin{functions}
+  \headdecl{sys/mman.h} 
 
-  \funcdecl{int mlock(const void *addr, size\_t len)}
-  Blocca la paginazione su un intervallo di memoria.
+  \funcdecl{int mlock(const void *addr, size\_t len)}
+  Blocca la paginazione su un intervallo di memoria.
 
-  \funcdecl{int munlock(const void *addr, size\_t len)}
-  Rimuove il blocco della paginazione su un intervallo di memoria.
+  \funcdecl{int munlock(const void *addr, size\_t len)}
+  Rimuove il blocco della paginazione su un intervallo di memoria.
   
-  \bodydesc{Entrambe le funzioni ritornano 0 in caso di successo e $-1$ in
+%   \bodydesc{Entrambe le funzioni ritornano 0 in caso di successo e $-1$ in
+%     caso di errore, nel qual caso \var{errno} assumerà uno dei
+%     valori seguenti:
+%   \begin{errlist}
+%   \item[\errcode{ENOMEM}] alcuni indirizzi dell'intervallo specificato non
+%     corrispondono allo spazio di indirizzi del processo o si è ecceduto
+%     il numero massimo consentito di pagine bloccate.
+%   \item[\errcode{EINVAL}] \param{len} non è un valore positivo.
+%   \item[\errcode{EPERM}] con un kernel successivo al 2.6.9 il processo non è
+%     privilegiato e si un limite nullo per \const{RLIMIT\_MEMLOCK}.
+%   \end{errlist}
+%   e, per \func{mlock}, anche \errval{EPERM} quando il processo non ha i
+%   privilegi richiesti per l'operazione.}
+% \end{functions}
+
+\begin{funcproto}{
+  \fhead{sys/mman.h} 
+  \fdecl{int mlock(const void *addr, size\_t len)}
+  \fdesc{Blocca la paginazione su un intervallo di memoria.}
+
+  \fdecl{int munlock(const void *addr, size\_t len)}
+  \fdesc{Rimuove il blocco della paginazione su un intervallo di memoria.}
+  }
+{Entrambe le funzioni ritornano 0 in caso di successo e $-1$ in
     caso di errore, nel qual caso \var{errno} assumerà uno dei
     valori seguenti:
   \begin{errlist}
@@ -982,7 +1025,8 @@ prototipi sono:
   \end{errlist}
   e, per \func{mlock}, anche \errval{EPERM} quando il processo non ha i
   privilegi richiesti per l'operazione.}
-\end{functions}
+\end{funcproto}
+
 
 Le due funzioni permettono rispettivamente di bloccare e sbloccare la
 \index{paginazione} paginazione per l'intervallo di memoria specificato dagli
@@ -1360,9 +1404,9 @@ ritornato il carattere \texttt{':'}, infine se viene incontrato il valore
 \texttt{'-{}-'} la scansione viene considerata conclusa, anche se vi sono altri
 elementi di \param{argv} che cominciano con il carattere \texttt{'-'}.
 
-\begin{figure}[htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
-  \begin{minipage}[c]{15.6cm}
+  \begin{minipage}[c]{\codesamplewidth}
   \includecodesample{listati/option_code.c}
   \end{minipage}
   \normalsize
@@ -2111,9 +2155,8 @@ seconda di come i singoli bit vengono aggregati per formare le variabili
 intere (ed in genere in diretta corrispondenza a come sono poi in realtà
 cablati sui bus interni del computer).
 
-\begin{figure}[htb]
-  \centering
-  \includegraphics[height=3cm]{img/endianess}
+\begin{figure}[!htb]
+  \centering \includegraphics[height=3cm]{img/endianess}
   \caption{Schema della disposizione dei dati in memoria a seconda della
     \textit{endianess}.}
   \label{fig:sock_endianess}
@@ -2178,9 +2221,9 @@ in genere resta sempre lo stesso,\footnote{su architettura PowerPC è possibile
   cambiarlo, si veda sez.~\ref{sec:process_prctl}.} anche quando il processore
 permetterebbe di eseguire questi cambiamenti.
 
-\begin{figure}[htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/endian.c}
   \end{minipage} 
   \normalsize