X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=process.tex;h=db45209e4b70f4cf7ab749001fdf846a178958d3;hp=8c7dc49d7655ad0a5cb1e4e4b1a1ed75e21f4198;hb=4aa6c51696d2b11c572eccd37238db1691785573;hpb=94b4d603807121b40eef06d22d2b6cd6e06ec7fd diff --git a/process.tex b/process.tex index 8c7dc49..db45209 100644 --- a/process.tex +++ b/process.tex @@ -1,6 +1,6 @@ %% process.tex %% -%% Copyright (C) 2000-2011 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2012 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", @@ -243,10 +243,11 @@ Un esempio di inclusione di questi file, preso da uno dei programmi di esempio, è il seguente, e si noti come gli \textit{header file} possano essere referenziati con il nome fra parentesi angolari, nel qual caso si indica l'uso di quelli installati con il sistema,\footnote{in un sistema GNU/Linux che - segue le specifiche del \textit{Filesystem Hierarchy Standard} (per maggiori - informazioni si consulti sez.~1.2.3 di \cite{AGL}) si trovano sotto - \texttt{/usr/include}.} o fra virgolette, nel qual caso si fa riferimento ad -una versione locale, da indicare con un pathname relativo: + segue le specifiche del \itindex{Filesystem~Hierarchy~Standard~(FHS)} + \textit{Filesystem Hierarchy Standard} (per maggiori informazioni si + consulti sez.~1.2.3 di \cite{AGL}) si trovano sotto \texttt{/usr/include}.} +o fra virgolette, nel qual caso si fa riferimento ad una versione locale, da +indicare con un pathname relativo: \includecodesnip{listati/main_include.c} Si tenga presente che oltre ai nomi riservati a livello generale di cui si è @@ -1074,11 +1075,10 @@ funzioni di libreria una propria versione (che può essere più o meno specializzata per il debugging). Esistono varie librerie che forniscono dei sostituti opportuni delle funzioni di allocazione in grado, senza neanche ricompilare il programma,\footnote{esempi sono \textit{Dmalloc} - \href{http://dmalloc.com/}{\textsf{http://dmalloc.com/}} di Gray Watson ed - \textit{Electric Fence} di Bruce Perens.} di eseguire diagnostiche anche -molto complesse riguardo l'allocazione della memoria. Vedremo alcune delle -funzionalità di ausilio presenti nella \acr{glibc} in -sez.~\ref{sec:proc_memory_adv_management}. + \url{http://dmalloc.com/} di Gray Watson ed \textit{Electric Fence} di Bruce + Perens.} di eseguire diagnostiche anche molto complesse riguardo +l'allocazione della memoria. Vedremo alcune delle funzionalità di ausilio +presenti nella \acr{glibc} in sez.~\ref{sec:proc_memory_adv_management}. Una possibile alternativa all'uso di \func{malloc}, per evitare di soffrire dei problemi di \itindex{memory~leak} \textit{memory leak} descritti in @@ -1262,14 +1262,14 @@ il suo prototipo è: {La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual caso \var{errno} assumerà uno dei valori: \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. + \item[\errcode{EFAULT}] \param{vec} punta ad un indirizzo non valido. + \item[\errcode{EINVAL}] \param{addr} non è un multiplo delle dimensioni di + una pagina. + \item[\errcode{ENOMEM}] o \param{addr}$+$\param{length} eccede la dimensione + della memoria usata dal processo o l'intervallo di indirizzi specificato + non è mappato. \end{errlist}} \end{funcproto} @@ -1393,11 +1393,11 @@ singole sezioni di memoria sono rispettivamente \funcd{mlock} e {Entrambe le funzioni ritornano $0$ in caso di successo e $-1$ in caso di errore, nel qual caso \var{errno} assumerà uno dei valori: \begin{errlist} + \item[\errcode{EINVAL}] \param{len} non è un valore positivo. \item[\errcode{ENOMEM}] alcuni indirizzi dell’intervallo specificato non corrispondono allo spazio di indirizzi del processo o si è superato il limite di \const{RLIMIT\_MEMLOCK} per un processo non privilegiato (solo per kernel a partire dal 2.6.9). - \item[\errcode{EINVAL}] \param{len} non è un valore positivo. \item[\errcode{EPERM}] il processo non è privilegiato (per kernel precedenti il 2.6.9) o si ha un limite nullo per \const{RLIMIT\_MEMLOCK} e il processo non è privilegiato (per kernel a partire dal 2.6.9). @@ -1521,8 +1521,8 @@ rispettivi prototipi sono: caso di successo e \val{NULL} in caso di errore, nel qual caso \var{errno} assumerà uno dei valori: \begin{errlist} - \item[\errcode{ENOMEM}] non c'è memoria sufficiente per l'allocazione. \item[\errcode{EINVAL}] \param{boundary} non è una potenza di due. + \item[\errcode{ENOMEM}] non c'è memoria sufficiente per l'allocazione. \end{errlist}} \end{funcproto} @@ -1553,9 +1553,9 @@ prototipo è: caso di successo e \val{NULL} in caso di errore, nel qual caso \var{errno} assumerà uno dei valori: \begin{errlist} - \item[\errcode{ENOMEM}] non c'è memoria sufficiente per l'allocazione. \item[\errcode{EINVAL}] \param{alignment} non è potenza di due e multiplo di \code{sizeof(void *)}. + \item[\errcode{ENOMEM}] non c'è memoria sufficiente per l'allocazione. \end{errlist}} \end{funcproto} @@ -1831,7 +1831,7 @@ inoltre inizializza alcune \index{variabili!globali} variabili globali: \end{itemize*} In fig.~\ref{fig:proc_options_code} si è mostrata la sezione del programma -\file{ForkTest.c}, che useremo nel prossimo capitolo per effettuare dei test +\file{fork\_test.c}, che useremo nel prossimo capitolo per effettuare dei test sulla creazione dei processi, deputata alla decodifica delle opzioni a riga di comando da esso supportate. @@ -2116,10 +2116,10 @@ suo prototipo è: {La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual caso \var{errno} assumerà uno dei valori: \begin{errlist} - \item[\errcode{ENOMEM}] non c'è memoria sufficiente per aggiungere una nuova - variabile all'ambiente. \item[\errcode{EINVAL}] \param{name} è \val{NULL} o una stringa di lunghezza nulla o che contiene il carattere ``\texttt{=}''. + \item[\errcode{ENOMEM}] non c'è memoria sufficiente per aggiungere una nuova + variabile all'ambiente. \end{errlist}} \end{funcproto}