Materiale su mcheck
authorSimone Piccardi <piccardi@gnulinux.it>
Thu, 23 Apr 2009 15:57:17 +0000 (15:57 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Thu, 23 Apr 2009 15:57:17 +0000 (15:57 +0000)
process.tex

index 4d5118c513d0386f6af0df3aa3e2c83870d4dd32..98c9b8d2ad520db0f036f902f46d2495901d4bf9 100644 (file)
@@ -1158,6 +1158,62 @@ sia stampato il messaggio d'errore che abortito il programma. In genere 
 opportuno definire la variabile ad un valore diverso da zero che consente di
 rilevare un errore nel momento in cui avviene.
 
+Una modalità alternativa per effettuare dei controlli di consistenza sullo
+stato delle allocazioni di memoria eseguite con \func{malloc}, anche questa
+fornita come estensione specifica (e non standard) delle \acr{glibc}, è quella
+di utilizzare la funzione \funcd{mcheck}, che deve essere chiamata prima di
+eseguire qualunque allocazione con \func{malloc}; il suo prototipo è:
+\begin{prototype}{mcheck.h}{mcheck(void (*abortfn) (enum mcheck\_status
+    status))} 
+  Attiva i controlli di consistenza delle allocazioni eseguite da \func{malloc}.
+  
+  \bodydesc{La funzione restituisce 0 in caso di successo e $-1$ in caso di
+    fallimento; \var{errno} non viene impostata.}
+\end{prototype}
+
+La funzione consente di registrare una funzione di emergenza, da passare come
+argomento, che verrà eseguita tutte le volte che, in una successiva esecuzione
+di \func{malloc}, venissero trovate delle inconsistenze, come delle operazioni
+di scrittura oltre i limiti dei buffer allocati. Per questo motivo la funzione
+deve essere chiamata prima di qualunque allocazione di memoria, altrimenti
+fallirà con un valore di ritorni di $-1$.
+
+Se come argomento si passa \var{NULL} verrà utilizzata una funzione
+predefinita che stampa un messaggio di errore ed invoca la funzione
+\func{abort} (vedi sez.~\ref{sec:sig_alarm_abort}), altrimenti si dovrà
+utilizzare una funzione ad hoc che riceverà come argomento un codice di tipo
+\type{mcheck\_status}, un tipo enumerato che può assumere soltanto i valori di
+tab. 
+
+
+
+\begin{table}[htb]
+  \centering
+  \footnotesize
+  \begin{tabular}[c]{|l|c|c|c|p{7cm}|}
+    \hline
+    \textbf{Valore} & \textbf{Significato} \\
+    \hline
+    \hline
+    \macro{}& \\
+    \macro{}& \\
+    \macro{}& \\
+    \macro{}& \\
+    \macro{}& \\
+    \macro{}& \\
+    \macro{}& \\
+    \macro{}& \\
+    \macro{}& \\
+    \macro{}& \\
+    \macro{}& \\
+    \macro{}& \\
+    \macro{}& \\
+    \hline
+  \end{tabular}
+  \caption{Valori dello stato.} 
+  \label{tab:mcheck_status_value}
+\end{table}
+
 % TODO: trattare le altre funzionalità avanzate di \func{malloc}, mallopt,
 % mtrace, muntrace, mcheck, mallinfo e gli hook
 % con le glibc 2.10 c'è pure malloc_info a sostituire mallinfo, vedi
@@ -1531,16 +1587,16 @@ alla cancellazione di tutto l'ambiente per costruirne una versione
 ``\textsl{sicura}'' da zero.
 
 
-\subsection{Opzioni in formato esteso}
-\label{sec:proc_opt_extended}
+%\subsection{Opzioni in formato esteso}
+%\label{sec:proc_opt_extended}
 
-Oltre alla modalità ordinaria di gestione delle opzioni trattata in
-sez.~\ref{sec:proc_opt_handling} le \acr{glibc} forniscono una modalità
-alternativa costituita dalle cosiddette \textit{long-options}, che consente di
-esprimere le opzioni in una forma più descrittiva che nel caso più generale è
-qualcosa del tipo di ``\texttt{-{}-option-name=parameter}''.
+%Oltre alla modalità ordinaria di gestione delle opzioni trattata in
+%sez.~\ref{sec:proc_opt_handling} le \acr{glibc} forniscono una modalità
+%alternativa costituita dalle cosiddette \textit{long-options}, che consente di
+%esprimere le opzioni in una forma più descrittiva che nel caso più generale è
+%qualcosa del tipo di ``\texttt{-{}-option-name=parameter}''.
 
-(NdA: questa parte verrà inserita in seguito).
+%(NdA: questa parte verrà inserita in seguito).
 
 % TODO opzioni in formato esteso