Correzioni multiple agli indici delle funzioni, inserita macro per
[gapil.git] / fileunix.tex
index 3f4d4bbf63bdf8aa699865354a4514f78bc335e2..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
 
 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
 \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
 \end{itemize*}
 
 In fig.~\ref{fig:file_proc_file} si è riportato uno schema in cui è illustrata
@@ -230,7 +230,7 @@ quella che crea l'associazione fra un \textit{pathname} ed un
 
 
 La funzione apre il file usando il primo file descriptor libero, e crea
 
 
 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.
 
 \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
 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*}
 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},
 
 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.
 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
 \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
 
 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
@@ -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
 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.
 
 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
   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.
   \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
 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
 
 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
 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
 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}.
 
 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
 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.
 
 alla stessa voce nella \textit{file table}; per questo si dice che il nuovo
 file descriptor è \textsl{duplicato}, da cui il nome della funzione.
 
@@ -1254,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{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{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{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
     \hline
   \end{tabular}
   \caption{Corrispondenze fra le nuove funzioni ``\textit{at}'' e le
@@ -1272,7 +1272,10 @@ 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.}
 
 \footnotetext{in questo caso l'argomento \param{flags} è disponibile ed
   utilizzabile solo a partire dal kernel 2.6.18.}
 
-% TODO manca prototipo di fchmodat
+% 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
 
 Per tutte le funzioni che lo prevedono, a parte \func{unlinkat} e
 \funcd{faccessat}, l'ulteriore argomento è stato introdotto solo per fornire
@@ -1293,7 +1296,7 @@ che \func{lchown}; il suo prototipo è:
   \funcdecl{int fchownat(int dirfd, const char *pathname, uid\_t owner, gid\_t
     group, int flags)}
 
   \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ù:
   
   \bodydesc{la funzione restituisce gli stessi valori e gli stessi codici di
     errore di \func{chown}, ed in più:
@@ -1378,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.
 
 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}
 
 \subsection{La funzione \func{fcntl}}
 \label{sec:file_fcntl}