X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=process.tex;h=42781334410eabf708cd15968f1355cd99a8419f;hp=f0bc1595db69c51a29690fc133d149599a05fd2b;hb=487b554b85cda92d10367d5af69a0355b9b2329d;hpb=a76ef671288ddb656f3a4aa599cfda5e05491c39 diff --git a/process.tex b/process.tex index f0bc159..4278133 100644 --- a/process.tex +++ b/process.tex @@ -601,21 +601,22 @@ avere con le variabili automatiche, su cui torneremo in L'uso di queste funzioni è necessario solo quando si voglia accedere alle analoghe system call a cui fanno da interfaccia (ad esempio per implementare una propria versione di \func{malloc}. Le funzioni sono: -\begin{prototype}{unistd.h}{int *brk(void end\_data\_segment)} +\begin{functions} + \headdecl{unistd.h} + \funcdecl{int *brk(void end\_data\_segment)} Sposta la fine del segmento dei dati all'indirizzo specificato da \var{end\_data\_segment}. La funzione restituisce 0 in caso di successo e -1 in caso di fallimento, nel qual caso \var{errno} viene settata a \macro{ENOMEM}. -\end{prototype} -\begin{prototype}{unistd.h}{int *sbrk(ptrdiff\_t increment)} + \funcdecl{int *sbrk(ptrdiff\_t increment)} Incrementa lo spazio dati di un programma di \var{increment}. Un valore zero restituisce l'attuale posizione della fine del segmento dati. La funzione restituisce il puntatore all'inizio della nuova zona di memoria allocata in caso di successo e \macro{NULL} in caso di fallimento, nel qual caso \macro{errno} viene settata a \macro{ENOMEM}. -\end{prototype} +\end{functions} Queste funzioni sono state deliberatamente escluse dallo standard POSIX.1 e per i programmi normali è opportuno usare le funzioni di allocazione standard @@ -708,28 +709,23 @@ Le funzioni per bloccare e sbloccare singole sezioni di memoria sono \var{len} byte. Tutte le pagine che contengono una parte dell'intervallo sono mantenute in RAM per tutta la durata del blocco. - La funzione ritorna 0 in caso di successo e -1 in caso di errore, nel qual - caso \var{errno} è settata ad uno dei valori seguenti: - \begin{errlist} - \item \macro{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 \macro{EPERM} il processo non ha i privilegi richiesti per - l'operazione. - \item \macro{EINVAL} \var{len} non è un valore positivo. - \end{errlist} - \funcdecl{int munlock(const void *addr, size\_t len)} Alloca \var{size} byte nello heap. La memoria non viene inizializzata. - Sblocca l'intervallo di memoria da \var{addr} per \var{len} byte. La - funzione ritorna 0 in caso di successo e -1 in caso di errore, nel qual caso - \var{errno} è settata ad uno dei valori seguenti: + Sblocca l'intervallo di memoria da \var{addr} per \var{len} byte. + + + \bodydesc{Entrambe le funzioni ritornano 0 in caso di successo e -1 in + caso di errore, nel qual caso \var{errno} è settata ad uno dei + valori seguenti: \begin{errlist} - \item \macro{ENOMEM} alcuni indirizzi dell'intervallo specificato non - corrispondono allo spazio di indirizzi del processo. - \item \macro{EINVAL} \var{len} non è un valore positivo. + \item[\macro{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[\macro{EINVAL}] \var{len} non è un valore positivo. \end{errlist} + e, per \func{mlock}, anche \macro{EPERM} quando il processo non ha i + privilegi richiesti per l'operazione.} \end{functions} Altre due funzioni, \func{mlockall} e \func{munlockall}, consentono di @@ -742,12 +738,11 @@ queste funzioni sono: \funcdecl{int mlockall(int flags)} Blocca la paginazione per lo spazio di indirizzi del processo corrente. - Codici di ritorno ed errori sono gli stessi di \func{mlock}. - \funcdecl{int munlockall(void)} Sblocca la paginazione per lo spazio di indirizzi del processo corrente. - Codici di ritorno ed errori sono gli stessi di \func{munlock}. + \bodydesc{Codici di ritorno ed errori sono gli stessi di \func{mlock} + e \func{munlock}.} \end{functions} Il parametro \var{flags} di \func{mlockall} permette di controllarne il