stesso, ma anche essi devono essere montati all'interno dell'albero.
All'interno dello stesso albero si potranno poi inserire anche gli altri
-oggetti visti attraverso l'interfaccia che manipola i file come le FIFO, i
+oggetti visti attraverso l'interfaccia che manipola i file come le fifo, i
link, i socket e gli stessi i file di dispositivo (questi ultimi, per
convenzione, sono inseriti nella directory \file{/dev}).
\type{FILE *}. L'interfaccia è definita nell'header \type{stdio.h}.
Entrambe le interfacce possono essere usate per l'accesso ai file come agli
-altri oggetti del VFS (pipe, socket, device), ma per poter accedere alle
-operazioni di controllo sul particolare tipo di oggetto del VFS scelto occorre
-usare l'interfaccia standard di unix coi file descriptor. Allo stesso modo
-devono essere usati i file descriptor se si vuole ricorrere a modalità
-speciali di I/O come il polling o il non-bloccante (vedi
-\secref{sec:file_noblocking}).
+altri oggetti del VFS (pipe, socket, device, sui quali torneremo in dettaglio
+a tempo opportuno), ma per poter accedere alle operazioni di controllo sul
+particolare tipo di oggetto del VFS scelto occorre usare l'interfaccia
+standard di unix coi file descriptor. Allo stesso modo devono essere usati i
+file descriptor se si vuole ricorrere a modalità speciali di I/O come il
+polling o il non-bloccante (vedi \secref{sec:file_noblocking}).
Gli stream forniscono un'interfaccia di alto livello costruita sopra quella
dei file descriptor, che tratta tutti i file nello stesso modo, con
Il VFS usa una tabella mantenuta dal kernel che contiene il nome di ciascun
filesystem supportato: quando si vuole inserire il supporto di un nuovo
filesystem tutto quello che occorre è chiamare la funzione
-\func{register\_filesystem} passandole un'apposita struttura
+\code{register\_filesystem} passandole un'apposita struttura
(\var{file\_system\_type}) che contiene i dettagli per il riferimento
all'implementazione del medesimo, che sarà aggiunta alla citata tabella.
pathname il VFS deve creare una nuova \textit{dentry} e caricare l'inode
corrispondente in memoria.
-Questo procedimento viene eseguito dal metodo \func{lookup()} dell'inode
+Questo procedimento viene eseguito dal metodo \code{lookup()} dell'inode
della directory che contiene il file; questo viene installato nelle relative
strutture in memoria quando si effettua il montaggio lo specifico filesystem
su cui l'inode va a vivere.
\textbf{Funzione} & \textbf{Operazione} \\
\hline
\hline
- \textsl{\func{open}} & apre il file \\
- \textsl{\func{read}} & legge dal file \\
- \textsl{\func{write}} & scrive sul file \\
- \textsl{\func{llseek}} & sposta la posizione corrente sul file \\
- \textsl{\func{ioctl}} & accede alle operazioni di controllo
+ \textsl{\code{open}} & apre il file \\
+ \textsl{\code{read}} & legge dal file \\
+ \textsl{\code{write}} & scrive sul file \\
+ \textsl{\code{llseek}} & sposta la posizione corrente sul file \\
+ \textsl{\code{ioctl}} & accede alle operazioni di controllo
(tramite la \func{ioctl})\\
- \textsl{\func{readdir}}& per leggere il contenuto di una directory \\
- \textsl{\func{poll}} & \\
- \textsl{\func{mmap}} & chiamata dalla system call \func{mmap}.
+ \textsl{\code{readdir}}& per leggere il contenuto di una directory \\
+ \textsl{\code{poll}} & \\
+ \textsl{\code{mmap}} & chiamata dalla system call \func{mmap}.
mappa il file in memoria\\
- \textsl{\func{release}}& chiamata quando l'ultima referenza a un file
+ \textsl{\code{release}}& chiamata quando l'ultima referenza a un file
aperto è chiusa\\
- \textsl{\func{fsync}} & chiamata dalla system call \func{fsync} \\
- \textsl{\func{fasync}} & chiamate da \func{fcntl} quando è abilitato
+ \textsl{\code{fsync}} & chiamata dalla system call \func{fsync} \\
+ \textsl{\code{fasync}} & chiamate da \func{fcntl} quando è abilitato
il modo asincrono per l'I/O su file. \\
\hline
\end{tabular}
Così sarà possibile scrivere sulla porta seriale come su un file di dati
normale; ovviamente certe operazioni (nel caso della seriale ad esempio la
-\func{seek}) non saranno disponibili, però con questo sistema l'utilizzo di
+\code{seek}) non saranno disponibili, però con questo sistema l'utilizzo di
diversi filesystem (come quelli usati da Windows o MacOs) è immediato e
(relativamente) trasparente per l'utente ed il programmatore.