Materiale su memaling e affini, tempi dei file ed altro
authorSimone Piccardi <piccardi@gnulinux.it>
Wed, 11 Mar 2009 08:04:49 +0000 (08:04 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Wed, 11 Mar 2009 08:04:49 +0000 (08:04 +0000)
filedir.tex
fileunix.tex
process.tex

index 8bb46d76e4553405af3ca644ea6a3b79de2476df..b15c5f098b3216c6b5539cb3aea5447d3b19a12f 100644 (file)
@@ -1541,9 +1541,10 @@ su un file, su un link simbolico e su un file descriptor.
 La struttura \struct{stat} usata da queste funzioni è definita nell'header
 \file{sys/stat.h} e in generale dipende dall'implementazione; la versione
 usata da Linux è mostrata in fig.~\ref{fig:file_stat_struct}, così come
-riportata dalla pagina di manuale di \func{stat} (in realtà la definizione
+riportata dalla pagina di manuale di \func{stat}in realtà la definizione
 effettivamente usata nel kernel dipende dall'architettura e ha altri campi
-riservati per estensioni come tempi più precisi, o per il padding dei campi).
+riservati per estensioni come tempi dei file più precisi (vedi
+sez.~\ref{sec:file_file_times}), o per il padding dei campi.
 
 \begin{figure}[!htb]
   \footnotesize
@@ -1561,8 +1562,6 @@ Si noti come i vari membri della struttura siano specificati come tipi
 primitivi del sistema (di quelli definiti in
 tab.~\ref{tab:intro_primitive_types}, e dichiarati in \file{sys/types.h}).
 
-% TODO: aggiornare con i cambiamenti ai tempi fatti con il 2.6
-
 \subsection{I tipi di file}
 \label{sec:file_types}
 
@@ -1940,6 +1939,17 @@ file di dispositivo, scrivendo direttamente sul disco senza passare attraverso
 il filesystem, ma ovviamente in questo modo la cosa è molto più complicata da
 realizzare.
 
+Infine a partire dal kernel 2.6 la risoluzione dei tempi dei file, che nei
+campi di tab.~\ref{tab:file_file_times} è espressa in secondi, è stata
+portata ai nanosecondi per la gran parte dei filesystem. La ulteriore
+informazione può essere acceduta attraverso altri campi; se si sono definite
+le macro \macro{\_BSD\_SOURCE} o \macro{\_SVID\_SOURCE} questi sono
+\var{st\_atim.tv\_nsec}, \var{st\_mtim.tv\_nsec} e \var{st\_ctim.tv\_nsec} se
+queste non sono definite, \var{st\_atimensec}, \var{st\_mtimensec} e
+\var{st\_mtimensec}. Qualora il supporto per questa maggior precisione sia
+assente questi campi aggiuntivi saranno nulli.
+
+%TODO documentare utimes
 
 
 \section{Il controllo di accesso ai file}
index 21d0e5947aafa2b1f27e151082cf7477013ddf37..c9712a72596999162df4bee2068b1a8a2c8da3d3 100644 (file)
@@ -1140,15 +1140,15 @@ l'argomento \param{dirfd}.\footnote{non staremo pertanto a riportarli uno per
 \begin{table}[htb]
   \centering
   \footnotesize
-  \begin{tabular}[c]{|l|l|}
+  \begin{tabular}[c]{|l|c|l|}
     \hline
-    \textbf{Funzione} & \textbf{Corrispondente} \\
+    \textbf{Funzione} &\textbf{Flags} \textbf{Corrispondente} \\
     \hline
     \hline
-     \func{faccessat} &\func{access}  \\
-     \func{fchmodat}  &\func{chmod}   \\
-     \func{fchownat}  &\func{chown}   \\
-     \func{fstatat}   &\func{stat}    \\
+     \func{faccessat} & --     &\func{access}  \\
+     \func{fchmodat}  &$\bullet$\func{chmod}   \\
+     \func{fchownat}  &\func{chown},\func{lchown}    \\
+     \func{fstatat}   &\func{stat},\func{lstat}    \\
      \func{futimesat} &\func{utimes}  \\
      \func{linkat}    &\func{link}    \\
      \func{mkdirat}   &\func{mkdir}   \\
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}