Materiale su memaling e affini, tempi dei file ed altro
[gapil.git] / process.tex
index c332e5c0a12a2b094dfab9848a51b16abda01c4f..4286f3fc5296bf53c58fa9d0900d01d6e8fcc6b3 100644 (file)
@@ -1035,7 +1035,8 @@ Le funzioni restituiscono il puntatore al buffer di memoria allocata, che per
 \func{memalign} sarà un multiplo di \param{boundary} mentre per \func{valloc}
 un multiplo della dimensione di una pagina di memoria. Nel caso della versione
 fornita dalle \acr{glibc} la memoria allocata con queste funzioni deve essere
-liberata con \func{free}.
+liberata con \func{free}, cosa che non è detto accada con altre
+implementazioni.
 
 Nessuna delle due funzioni ha una chiara standardizzazione (nessuna delle due
 compare in POSIX.1), ed inoltre ci sono indicazione discordi sui file che ne
@@ -1046,14 +1047,29 @@ contengono la definizione;\footnote{secondo SUSv2 \func{valloc} 
 per questo motivo il loro uso è sconsigliato, essendo state sostituite dalla
 nuova \funcd{posix\_memalign}, che è stata standardizzata in POSIX.1d; il suo
 prototipo è:
+\begin{prototype}{stdlib.h}{posix\_memalign(void **memptr, size\_t alignment,
+    size\_t size) } 
+  Alloca un buffer di memoria allineato ad un multiplo di \param{alignment}.
+  
+  \bodydesc{La funzione restituisce 0 in caso di successo e \val{NULL} in caso
+    di fallimento, o uno dei due codici di errore \errcode{ENOMEM} o
+    \errcode{EINVAL}; \var{errno} non viene impostata.}
+\end{prototype}
+
+La funzione restituisce il puntatore al buffer allocato all'indirizzo indicato
+da \param{memptr}. La funzione fallisce nelle stesse condizioni delle due
+funzioni precedenti, ma a differenza di \func{memalign} restituisce un codice
+di errore \errcode{EINVAL} anche se \param{alignment} non è un multiplo della
+la dimensione di \code{sizeof(void *)}. Come per le precedenti la memoria
+allocata con \func{posix\_memalign} può essere disallocata con
+\func{free}.\footnote{che in caso questo caso è quanto richiesto dallo
+  standard.}
 
 
+% TODO: trattare le funzionalità avanzate di \func{malloc}
+
 % TODO documentare \func{madvise}
 % TODO documentare \func{mincore}
-% TODO: trattare le funzionalità avanzate di \func{malloc}
-% TODO: trattare \func{memalign}
-% TODO: trattare \func{valloc}
-% TODO: trattare \func{posix\_memalign}