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
 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
 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
 
 \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}).
 
 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}
 
 \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.
 
 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}
 
 
 \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{table}[htb]
   \centering
   \footnotesize
-  \begin{tabular}[c]{|l|l|}
+  \begin{tabular}[c]{|l|c|l|}
     \hline
     \hline
-    \textbf{Funzione} & \textbf{Corrispondente} \\
+    \textbf{Funzione} &\textbf{Flags} \textbf{Corrispondente} \\
     \hline
     \hline
     \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}   \\
      \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
 \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
 
 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 è:
 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 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}