Correzioni multiple agli indici delle funzioni, inserita macro per
[gapil.git] / fileunix.tex
index 9b8be611f693aa9a771834c21c7af07a12917ab2..3a16dddbd77f226272fdc225c0713450c7944e0a 100644 (file)
@@ -77,19 +77,19 @@ quest'ultima tabella.
 
 La \itindex{file~table} \textit{file table} è una tabella che contiene una
 voce per ciascun file che è stato aperto nel sistema. In Linux è costituita da
-strutture di tipo \struct{file}; in ciascuna di esse sono tenute varie
-informazioni relative al file, fra cui:
+puntatori alle strutture di tipo \kstruct{file} di fig.~\ref{fig:kstruct_file}
+che come illustrano mantengono varie informazioni relative al file, fra cui:
 \begin{itemize*}
 \item lo stato del file (nel campo \var{f\_flags}).
 \item il valore della posizione corrente (l'\textit{offset}) nel file (nel
   campo \var{f\_pos}).
 \item un puntatore \itindex{inode} all'inode\footnote{nel kernel 2.4.x si è in
-    realtà passati ad un puntatore ad una struttura \struct{dentry} che punta
-    a sua volta \itindex{inode} all'inode passando per la nuova struttura del
-    VFS.}  del file.
-%\item un puntatore alla tabella delle funzioni \footnote{la struttura
-%    \var{f\_op} descritta in sez.~\ref{sec:file_vfs_work}} che si possono usare
- sul file.
+    realtà passati ad un puntatore ad una struttura \kstruct{dentry} che punta
+    a sua volta \itindex{inode} all'\textit{inode} passando per la nuova
+    struttura del VFS.} del file.
+\item un puntatore \var{f\_op} alla tabella delle funzioni \footnote{quelle
+    della struttura \kstruct{file\_operation}, descritte in
+    tab.~\ref{tab:file_file_operations}.} che si possono usare sul file.
 \end{itemize*}
 
 In fig.~\ref{fig:file_proc_file} si è riportato uno schema in cui è illustrata
@@ -152,7 +152,7 @@ tab.~\ref{tab:file_std_files}.
       error}\\
     \hline
   \end{tabular}
-  \caption{Costanti definite in \file{unistd.h} per i file standard aperti 
+  \caption{Costanti definite in \headfile{unistd.h} per i file standard aperti 
     alla creazione di ogni processo.}
   \label{tab:file_std_files}
 \end{table}
@@ -189,8 +189,8 @@ usando direttamente le system call del kernel.
 \label{sec:file_open}
 
 La funzione \funcd{open} è la funzione fondamentale per accedere ai file, ed è
-quella che crea l'associazione fra un \itindex{pathname} \textit{pathname} ed
-un \itindex{file~descriptor} file descriptor, il suo prototipo è:
+quella che crea l'associazione fra un \textit{pathname} ed un
+\itindex{file~descriptor} file descriptor, il suo prototipo è:
 \begin{functions}
   \headdecl{sys/types.h}
   \headdecl{sys/stat.h}
@@ -230,7 +230,7 @@ un \itindex{file~descriptor} file descriptor, il suo prototipo è:
 
 
 La funzione apre il file usando il primo file descriptor libero, e crea
-l'opportuna voce, cioè la struttura \struct{file}, nella \itindex{file~table}
+l'opportuna voce, cioè la struttura \kstruct{file}, nella \itindex{file~table}
 \textit{file table} del processo.  Viene sempre restituito come valore di
 ritorno il file descriptor con il valore più basso disponibile.
 
@@ -412,7 +412,7 @@ sez.~\ref{sec:file_perm_management}) per il processo.
 La funzione prevede diverse opzioni, che vengono specificate usando vari bit
 dell'argomento \param{flags}.  Alcuni di questi bit vanno anche a costituire
 il flag di stato del file (o \textit{file status flag}), che è mantenuto nel
-campo \var{f\_flags} della struttura \struct{file} (al solito si veda lo schema
+campo \var{f\_flags} della struttura \kstruct{file} (al solito si veda lo schema
 di fig.~\ref{fig:file_proc_file}).  Essi sono divisi in tre categorie
 principali:
 \begin{itemize*}
@@ -507,7 +507,7 @@ di ripetere tre volte il comando prima di eseguire lo shutdown).
 
 Come già accennato in sez.~\ref{sec:file_fd} a ciascun file aperto è associata
 una \textsl{posizione corrente nel file} (il cosiddetto \textit{file offset},
-mantenuto nel campo \var{f\_pos} di \struct{file}) espressa da un numero intero
+mantenuto nel campo \var{f\_pos} di \kstruct{file}) espressa da un numero intero
 positivo come numero di byte dall'inizio del file. Tutte le operazioni di
 lettura e scrittura avvengono a partire da questa posizione che viene
 automaticamente spostata in avanti del numero di byte letti o scritti.
@@ -725,10 +725,10 @@ posizione \param{offset}, nel buffer \param{buf}.
 \end{prototype}
 
 La funzione prende esattamente gli stessi argomenti di \func{read} con lo
-stesso significato, a cui si aggiunge l'argomento \func{offset} che indica una
-posizione sul file. Identico è il comportamento ed il valore di ritorno. La
-funzione serve quando si vogliono leggere dati dal file senza modificare la
-posizione corrente.
+stesso significato, a cui si aggiunge l'argomento \param{offset} che indica
+una posizione sul file. Identico è il comportamento ed il valore di
+ritorno. La funzione serve quando si vogliono leggere dati dal file senza
+modificare la posizione corrente.
 
 L'uso di \func{pread} è equivalente all'esecuzione di una \func{read} seguita
 da una \func{lseek} che riporti al valore precedente la posizione corrente sul
@@ -744,7 +744,7 @@ accessibile solo attivando il supporto delle estensioni previste dalle
 #define _XOPEN_SOURCE 500
 \end{verbatim}
 e si ricordi di definire questa macro prima dell'inclusione del file di
-dichiarazioni \file{unistd.h}.
+dichiarazioni \headfile{unistd.h}.
 
 
 
@@ -841,7 +841,7 @@ Il primo caso è quello in cui due processi diversi aprono lo stesso file su
 disco; sulla base di quanto visto in sez.~\ref{sec:file_fd} avremo una
 situazione come quella illustrata in fig.~\ref{fig:file_mult_acc}: ciascun
 processo avrà una sua voce nella \textit{file table} referenziata da un
-diverso file descriptor nella sua \struct{file\_struct}. Entrambe le voci
+diverso file descriptor nella sua \kstruct{file\_struct}. Entrambe le voci
 nella \itindex{file~table} \textit{file table} faranno però riferimento allo
 stesso \itindex{inode} inode su disco.
 
@@ -862,7 +862,7 @@ che:
   prima impostata alla dimensione corrente del file letta \itindex{inode}
   dall'inode. Dopo la scrittura il file viene automaticamente esteso.
 \item l'effetto di \func{lseek} è solo quello di cambiare il campo
-  \var{f\_pos} nella struttura \struct{file} della \itindex{file~table}
+  \var{f\_pos} nella struttura \kstruct{file} della \itindex{file~table}
   \textit{file table}, non c'è nessuna operazione sul file su disco. Quando la
   si usa per porsi alla fine del file la posizione viene impostata leggendo la
   dimensione corrente \itindex{inode} dall'inode.
@@ -882,7 +882,7 @@ figlio all'esecuzione di una \func{fork} (si ricordi quanto detto in
 sez.~\ref{sec:proc_fork}). La situazione è illustrata in
 fig.~\ref{fig:file_acc_child}; dato che il processo figlio riceve una copia
 dello spazio di indirizzi del padre, riceverà anche una copia di
-\struct{file\_struct} e relativa tabella dei file aperti.
+\kstruct{file\_struct} e relativa tabella dei file aperti.
 
 In questo modo padre e figlio avranno gli stessi file descriptor che faranno
 riferimento alla stessa voce nella \textit{file table}, condividendo così la
@@ -894,10 +894,10 @@ corrente nel file varierà per entrambi i processi (in quanto verrà modificato
 Si noti inoltre che anche i flag di stato del file (quelli impostati
 dall'argomento \param{flag} di \func{open}) essendo tenuti nella voce della
 \textit{file table}\footnote{per la precisione nel campo \var{f\_flags} di
-  \struct{file}.}, vengono in questo caso condivisi. Ai file però sono
+  \kstruct{file}.}, vengono in questo caso condivisi. Ai file però sono
 associati anche altri flag, dei quali l'unico usato al momento è
 \const{FD\_CLOEXEC}, detti \textit{file descriptor flags}. Questi ultimi sono
-tenuti invece in \struct{file\_struct}, e perciò sono specifici di ciascun
+tenuti invece in \kstruct{file\_struct}, e perciò sono specifici di ciascun
 processo e non vengono modificati dalle azioni degli altri anche in caso di
 condivisione della stessa voce della \textit{file table}.
 
@@ -1055,7 +1055,7 @@ file descriptor è una copia esatta del precedente ed entrambi possono essere
 interscambiati nell'uso. Per capire meglio il funzionamento della funzione si
 può fare riferimento a fig.~\ref{fig:file_dup}: l'effetto della funzione è
 semplicemente quello di copiare il valore nella struttura
-\struct{file\_struct}, cosicché anche il nuovo file descriptor fa riferimento
+\kstruct{file\_struct}, cosicché anche il nuovo file descriptor fa riferimento
 alla stessa voce nella \textit{file table}; per questo si dice che il nuovo
 file descriptor è \textsl{duplicato}, da cui il nome della funzione.
 
@@ -1127,30 +1127,33 @@ file descriptor libero di valore uguale o maggiore di \param{newfd} (e se
 \label{sec:file_openat}
 
 Un problema che si pone con l'uso della funzione \func{open}, così come per
-molte altre funzioni che accettano come argomenti dei pathname relativi, è
-che, quando un pathname relativo non fa riferimento alla directory di lavoro
-corrente, è possibile che alcuni dei suoi componenti vengano modificati in
-parallelo alla chiamata a \func{open}, e questo lascia aperta la possibilità
-di una \itindex{race~condition} \textit{race condition}.
-
-Inoltre come già accennato, la directory di lavoro corrente è una proprietà
-del singolo processo; questo significa che quando si lavora con i
-\itindex{thread} \textit{thread} essa sarà la stessa per tutti, ma esistono
-molti casi in cui sarebbe invece utile che ogni singolo \itindex{thread}
-\textit{thread} avesse la sua directory di lavoro.
+molte altre funzioni che accettano come argomenti dei
+\itindsub{pathname}{relativo} \textit{pathname} relativi, è che, quando un
+\textit{pathname} relativo non fa riferimento alla \index{directory~di~lavoro}
+directory di lavoro corrente, è possibile che alcuni dei suoi componenti
+vengano modificati in parallelo alla chiamata a \func{open}, e questo lascia
+aperta la possibilità di una \itindex{race~condition} \textit{race condition}.
+
+Inoltre come già accennato, la \index{directory~di~lavoro} directory di lavoro
+corrente è una proprietà del singolo processo; questo significa che quando si
+lavora con i \itindex{thread} \textit{thread} essa sarà la stessa per tutti,
+ma esistono molti casi in cui sarebbe invece utile che ogni singolo
+\itindex{thread} \textit{thread} avesse la sua \index{directory~di~lavoro}
+directory di lavoro.
 
 Per risolvere questi problemi, riprendendo una interfaccia già presente in
 Solaris, a fianco delle normali funzioni che operano sui file (come
 \func{open}, \func{mkdir}, ecc.) sono state introdotte delle ulteriori
 funzioni, dette anche funzioni ``\textit{at}'' in quanto contraddistinte dal
 suffisso \texttt{at}, che permettono l'apertura di un file (o le rispettive
-altre operazioni) usando un pathname relativo ad una directory
-specificata.\footnote{l'introduzione è avvenuta su proposta dello sviluppatore
-  principale delle \acr{glibc} Urlich Drepper; le corrispondenti system call
-  sono state inserite nel kernel ufficiale a partire dalla versione 2.6.16, in
-  precedenza era disponibile una emulazione che, sia pure con prestazioni
-  inferiori, funzionava facendo ricorso all'uso del filesystem \textit{proc}
-  con l'apertura del file attraverso il riferimento a pathname del tipo di
+altre operazioni) usando un \itindsub{pathname}{relativo} \textit{pathname}
+relativo ad una directory specificata.\footnote{l'introduzione è avvenuta su
+  proposta dello sviluppatore principale delle \acr{glibc} Urlich Drepper; le
+  corrispondenti system call sono state inserite nel kernel ufficiale a
+  partire dalla versione 2.6.16, in precedenza era disponibile una emulazione
+  che, sia pure con prestazioni inferiori, funzionava facendo ricorso all'uso
+  del filesystem \textit{proc} con l'apertura del file attraverso il
+  riferimento a \textit{pathname} del tipo di
   \texttt{/proc/self/fd/dirfd/relative\_path}.} Benché queste funzioni non
 siano presenti negli standard tradizionali esse sono state adottate da vari
 Unix\footnote{oltre a Linux e Solaris sono presenti in vari BSD.} fino ad
@@ -1159,20 +1162,22 @@ POSIX.1; con le \acr{glibc} per l'accesso a queste funzioni è necessario
 definire la macro \macro{\_ATFILE\_SOURCE}.
 
 L'uso di queste funzioni prevede una apertura iniziale della directory che
-sarà la base della risoluzione dei pathname relativi che verranno usati in
-seguito, dopo di che si dovrà passare il relativo file descriptor alle varie
-funzioni che useranno quella directory come punto di partenza per la
-risoluzione.\footnote{in questo modo, anche quando si lavora con i
-  \itindex{thread} \textit{thread}, si può mantenere una directory di lavoro
-  diversa per ciascuno di essi.} 
+sarà la base della risoluzione dei \itindsub{pathname}{relativo}
+\textit{pathname} relativi che verranno usati in seguito, dopo di che si dovrà
+passare il relativo file descriptor alle varie funzioni che useranno quella
+directory come punto di partenza per la risoluzione.\footnote{in questo modo,
+  anche quando si lavora con i \itindex{thread} \textit{thread}, si può
+  mantenere una \index{directory~di~lavoro} directory di lavoro diversa per
+  ciascuno di essi.}
 
 Questo metodo, oltre a risolvere i problemi di \itindex{race~condition}
 \textit{race condition}, consente anche di ottenere aumenti di prestazioni
 significativi quando si devono eseguire molte operazioni su sezioni
 dell'albero dei file che prevedono delle gerarchie di sottodirectory molto
-profonde; infatti in questo caso basta eseguire la risoluzione del pathname
-della directory di partenza una sola volta (nell'apertura iniziale) e non
-tutte le volte che si deve accedere a ciascun file che essa contiene.
+profonde; infatti in questo caso basta eseguire la risoluzione del
+\textit{pathname} della directory di partenza una sola volta (nell'apertura
+iniziale) e non tutte le volte che si deve accedere a ciascun file che essa
+contiene.
 
 La sintassi generale di queste nuove funzioni è che esse prevedono come primo
 argomento il file descriptor della directory da usare come base, mentre gli
@@ -1185,36 +1190,42 @@ come:
   \funcdecl{int openat(int dirfd, const char *pathname, int flags,  mode\_t
     mode))} 
 
-  Apre un file usando come directory di lavoro corrente \param{dirfd}.
+  Apre un file usando come directory di \index{directory~di~lavoro} lavoro
+  corrente \param{dirfd}.
   
   \bodydesc{la funzione restituisce gli stessi valori e gli stessi codici di
     errore di \func{open}, ed in più:
   \begin{errlist}
   \item[\errcode{EBADF}] \param{dirfd} non è un file descriptor valido.
-  \item[\errcode{ENOTDIR}] \param{pathname} è un pathname relativo, ma
+  \item[\errcode{ENOTDIR}] \param{pathname} è un \itindsub{pathname}{relativo}
+    \textit{pathname} relativo, ma
     \param{dirfd} fa riferimento ad un file. 
   \end{errlist}}
 \end{functions}
 
 Il comportamento delle nuove funzioni è del tutto analogo a quello delle
 corrispettive classiche, con la sola eccezione del fatto che se fra i loro
-argomenti si utilizza un pathname relativo questo sarà risolto rispetto alla
-directory indicata da \param{dirfd}; qualora invece si usi un pathname
-assoluto \param{dirfd} verrà semplicemente ignorato. Infine se per
+argomenti si utilizza un \itindsub{pathname}{relativo} \textit{pathname}
+relativo questo sarà risolto rispetto alla directory indicata
+da \param{dirfd}; qualora invece si usi un \itindsub{pathname}{assoluto}
+\textit{pathname} assoluto \param{dirfd} verrà semplicemente ignorato. Infine
+se per
 \param{dirfd} si usa il valore speciale \const{AT\_FDCWD},\footnote{questa,
-  come le altre costanti \texttt{AT\_*}, è definita in \texttt{fcntl.h},
+  come le altre costanti \texttt{AT\_*}, è definita in \headfile{fcntl.h},
   pertanto se la si vuole usare occorrerà includere comunque questo file,
   anche per le funzioni che non sono definite in esso.} la risoluzione sarà
-effettuata rispetto alla directory di lavoro corrente del processo.
+effettuata rispetto alla directory di \index{directory~di~lavoro} lavoro
+corrente del processo.
 
 Così come il comportamento, anche i valori di ritorno e le condizioni di
 errore delle nuove funzioni sono gli stessi delle funzioni classiche, agli
 errori si aggiungono però quelli dovuti a valori errati per \param{dirfd}; in
 particolare si avrà un errore di \errcode{EBADF} se esso non è un file
-descriptor valido, ed un errore di \errcode{ENOTDIR} se esso non fa riferimento
-ad una directory.\footnote{tranne il caso in cui si sia specificato un
-  pathname assoluto, nel qual caso, come detto, il valore di \param{dirfd}
-  sarà completamente ignorato.}
+descriptor valido, ed un errore di \errcode{ENOTDIR} se esso non fa
+riferimento ad una directory.\footnote{tranne il caso in cui si sia
+  specificato un \itindsub{pathname}{assoluto} \textit{pathname} assoluto, nel
+  qual caso, come detto, il valore di \param{dirfd} sarà completamente
+  ignorato.}
 
 In tab.~\ref{tab:file_atfunc_corr} si sono riportate le funzioni introdotte
 con questa nuova interfaccia, con a fianco la corrispondente funzione
@@ -1243,14 +1254,14 @@ prevista anche l'aggiunta di un ulteriore argomento finale, \param{flags}.
      \func{fstatat}   &$\bullet$&\func{stat},\func{lstat}  \\
      \func{utimensat} &$\bullet$&\func{utimes},\func{lutimes}\\
      \func{linkat}    &$\bullet$\footnotemark&\func{link}    \\
-     \func{mkdirat}   & --      &\func{mkdir}   \\
-     \func{mknodat}   & --      &\func{mknod}   \\
+     \funcm{mkdirat}  & --      &\func{mkdir}   \\
+     \funcm{mknodat}  & --      &\func{mknod}   \\
      \func{openat}    & --      &\func{open}    \\
-     \func{readlinkat}& --      &\func{readlink}\\
-     \func{renameat}  & --      &\func{rename}  \\
-     \func{symlinkat} & --      &\func{symlink} \\
+     \funcm{readlinkat}& --     &\func{readlink}\\
+     \funcm{renameat} & --      &\func{rename}  \\
+     \funcm{symlinkat}& --      &\func{symlink} \\
      \func{unlinkat}  &$\bullet$&\func{unlink},\func{rmdir}  \\
-     \func{mkfifoat}  & --      &\func{mkfifo}  \\
+     \funcm{mkfifoat} & --      &\func{mkfifo}  \\
     \hline
   \end{tabular}
   \caption{Corrispondenze fra le nuove funzioni ``\textit{at}'' e le
@@ -1261,6 +1272,11 @@ prevista anche l'aggiunta di un ulteriore argomento finale, \param{flags}.
 \footnotetext{in questo caso l'argomento \param{flags} è disponibile ed
   utilizzabile solo a partire dal kernel 2.6.18.}
 
+% TODO manca prototipo di fchmodat, verificare se metterlo o metter menzione
+% TODO manca prototipo di fstatat, verificare se metterlo o metter menzione
+% TODO manca prototipo di linkat, verificare se metterlo o metter menzione
+% TODO manca prototipo di utimensat, verificare se metterlo o metter menzione
+
 Per tutte le funzioni che lo prevedono, a parte \func{unlinkat} e
 \funcd{faccessat}, l'ulteriore argomento è stato introdotto solo per fornire
 un meccanismo con cui modificarne il comportamento nel caso si stia operando
@@ -1269,7 +1285,7 @@ direttamente sullo stesso o sul file da esso referenziato. Dato che in certi
 casi esso può fornire ulteriori indicazioni per modificare il comportamento
 delle funzioni, \param{flags} deve comunque essere passato come maschera
 binaria, ed impostato usando i valori delle appropriate costanti
-\texttt{AT\_*}, definite in \texttt{fcntl.h}.
+\texttt{AT\_*}, definite in \headfile{fcntl.h}.
 
 Come esempio di questo secondo tipo di funzioni possiamo considerare
 \funcd{fchownat}, che può essere usata per sostituire sia \func{chown}
@@ -1280,21 +1296,21 @@ che \func{lchown}; il suo prototipo è:
   \funcdecl{int fchownat(int dirfd, const char *pathname, uid\_t owner, gid\_t
     group, int flags)}
 
-  .Modifica la proprietà di un file.
+  Modifica la proprietà di un file.
   
   \bodydesc{la funzione restituisce gli stessi valori e gli stessi codici di
     errore di \func{chown}, ed in più:
   \begin{errlist}
   \item[\errcode{EBADF}] \param{dirfd} non è un file descriptor valido.
   \item[\errcode{EINVAL}] \param{flags} non ha un valore valido.
-  \item[\errcode{ENOTDIR}] \param{pathname} è un pathname relativo, ma
-    \param{dirfd} fa riferimento ad un file. 
+  \item[\errcode{ENOTDIR}] \param{pathname} è un \itindsub{pathname}{relativo}
+    \textit{pathname} relativo, ma \param{dirfd} fa riferimento ad un file. 
   \end{errlist}}
 \end{functions}
 
 In questo caso il valore di \param{flags} stabilisce il comportamento della
 funzione quando la si applica ad un link simbolico, e l'unico valore
-utilizzabile è \const{AT\_SYMLINK\_NOFOLLOW}\footnote{in \texttt{fcntl.h} è
+utilizzabile è \const{AT\_SYMLINK\_NOFOLLOW}\footnote{in \headfile{fcntl.h} è
   definito anche \const{AT\_SYMLINK\_FOLLOW}, che richiede di dereferenziare i
   link simbolici, essendo questo però il comportamento adottato per un valore
   nullo di \param{flags} questo valore non viene mai usato.} che se impostato
@@ -1317,8 +1333,8 @@ il suo prototipo è:
   \begin{errlist}
   \item[\errcode{EBADF}] \param{dirfd} non è un file descriptor valido.
   \item[\errcode{EINVAL}] \param{flags} non ha un valore valido.
-  \item[\errcode{ENOTDIR}] \param{pathname} è un pathname relativo, ma
-    \param{dirfd} fa riferimento ad un file. 
+  \item[\errcode{ENOTDIR}] \param{pathname} è un \itindsub{pathname}{relativo}
+    \textit{pathname} relativo, ma \param{dirfd} fa riferimento ad un file. 
   \end{errlist}}
 \end{functions}
 
@@ -1327,7 +1343,7 @@ La funzione esegue lo stesso controllo di accesso effettuabile con
 il comportamento rispetto a quello ordinario di \func{access}. In questo caso
 esso può essere specificato come maschera binaria di due valori:
 \begin{basedescript}{\desclabelwidth{3.0cm}}
-\item[\const{AT\_EACCESS}] se impostato \funcd{faccessat} esegue il controllo
+\item[\const{AT\_EACCES}] se impostato \funcd{faccessat} esegue il controllo
   dei permessi usando l'\ids{UID} effettivo invece di quello reale (il
   comportamento di default, che riprende quello di \func{access}).
 \item[\const{AT\_SYMLINK\_NOFOLLOW}] se impostato \funcd{faccessat} non esegue
@@ -1351,8 +1367,8 @@ prototipo è:
   \begin{errlist}
   \item[\errcode{EBADF}] \param{dirfd} non è un file descriptor valido.
   \item[\errcode{EINVAL}] \param{flags} non ha un valore valido.
-  \item[\errcode{ENOTDIR}] \param{pathname} è un pathname relativo, ma
-    \param{dirfd} fa riferimento ad un file. 
+  \item[\errcode{ENOTDIR}] \param{pathname} è un \itindsub{pathname}{relativo}
+    \textit{pathname} relativo, ma \param{dirfd} fa riferimento ad un file.
   \end{errlist}}
 \end{functions}
 
@@ -1365,6 +1381,12 @@ in cui questo è una directory, se però si imposta \param{flags} al valore di
 caso \param{pathname} deve essere una directory, che sarà rimossa qualora
 risulti vuota.
 
+% TODO manca prototipo e motivazione di fexecve, da trattare qui in quanto
+% inserita nello stesso standard e da usare con openat, vedi 
+% http://pubs.opengroup.org/onlinepubs/9699939699/toc.pdf
+
+
+
 
 \subsection{La funzione \func{fcntl}}
 \label{sec:file_fcntl}
@@ -1540,8 +1562,8 @@ di quest'ultimo non assegna bit separati alle tre diverse modalità
   queste costanti sono poste rispettivamente ai valori 0, 1 e 2.} Per questo
 motivo il valore della modalità di accesso corrente si ottiene eseguendo un
 AND binario del valore di ritorno di \func{fcntl} con la maschera
-\const{O\_ACCMODE} (anch'essa definita in \file{fcntl.h}), che estrae i bit di
-accesso dal \textit{file status flag}.
+\const{O\_ACCMODE} (anch'essa definita in \headfile{fcntl.h}), che estrae i
+bit di accesso dal \textit{file status flag}.
 
 
 
@@ -1617,8 +1639,8 @@ elenco di alcuni esempi di esse è il seguente:
 
 In generale ogni dispositivo ha un suo insieme di operazioni specifiche
 effettuabili attraverso \func{ioctl}, tutte queste sono definite nell'header
-file \file{sys/ioctl.h}, e devono essere usate solo sui dispositivi cui fanno
-riferimento. Infatti anche se in genere i valori di \param{request} sono
+file \headfile{sys/ioctl.h}, e devono essere usate solo sui dispositivi cui
+fanno riferimento. Infatti anche se in genere i valori di \param{request} sono
 opportunamente differenziati a seconda del dispositivo\footnote{il kernel usa
   un apposito \textit{magic number} per distinguere ciascun dispositivo nella
   definizione delle macro da usare per \param{request}, in modo da essere
@@ -1727,7 +1749,7 @@ ma le due funzioni sono rimaste.
 % LocalWords:  Drepper path dirfd faccessat unlinkat access fchmodat chmod Di
 % LocalWords:  fchownat chown fstatat futimesat utimes linkat mknodat mknod uid
 % LocalWords:  readlinkat readlink renameat rename symlinkat symlink unlink gid
-% LocalWords:  mkfifoat mkfifo FDCWD EACCESS dereferenziazione rmdir REMOVEDIR
+% LocalWords:  mkfifoat mkfifo FDCWD dereferenziazione rmdir REMOVEDIR
 % LocalWords:  epoll lsattr chattr FIOQSIZE ATFILE lutimes utimensat lchown
 % LocalWords:  lstat owner FOLLOW