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
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}
\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
\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
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}
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