+I primi due valori, \macro{LOCK\_SH} e \macro{LOCK\_EX} permettono di
+richiedere un \textit{file lock}, ed ovviamente devono essere usati in maniera
+esclusiva. Se si specifica anche \macro{LOCK\_NB} la funzione non si bloccherà
+qualora il lock non possa essere aqcuisito, ma ritornerà subito con un errore
+di \macro{EWOULDBLOCK}. Per rilasciare un lock si dovrà invece usare
+\macro{LOCK\_NB}.
+
+La semantica del file locking di BSD è diversa da quella del file locking
+POSIX, in particolare per quanto riguarda il comportamento dei lock nei
+confronti delle due funzioni \func{dup} e \func{fork}. Per capire cosa
+succede in questi casi, occorre tenere presente che il file locking (qualunque
+sia l'interfaccia che si usa), anche se richiesto attraverso un file
+descriptor, agisce sempre su un file, secondo lo schema di
+\figref{fig:file_lock_struct}. Questo significa che le informazioni relative
+agli eventuali lock sono mantenute a livello di inode,\footnote{come mostrato
+ in \figref{fig:file_flock_struct} i \textit{file lock} sono mantenuti un una
+ \textit{linked list}\index{linked list} di strutture \var{file\_lock}, il
+ cui indirizzo iniziale è mantenuto dal campo \var{i\_flock} della struttura
+ \var{inode} (il tutto è definito nei sorgenti del kernel in \file{fs.h}). Un
+ bit del campo \var{fl\_flags} di specifica se si tratta di un lock in
+ semantica BSD (\macro{FL\_FLOCK}) o POSIX (\macro{FL\_POSIX}).} come è
+naturale dato che l'inode è l'unica cosa in comune cui possono accedere due
+processi diversi che aprono lo stesso file.
+
+
+\begin{figure}[htb]
+ \centering
+ \includegraphics[width=13cm]{img/file_flock}
+ \caption{Schema dell'architettura del file locking, nel caso particolare
+ del suo utilizzo da parte dalla funzione \func{flock}.}
+ \label{fig:file_flock_struct}
+\end{figure}
+
+
+
+Nel caso dei lock creati con \func{flock} la semantica prevede che sia
+\func{dup} che \func{fork} non creano ulteriori istanze di un \textit{file
+ lock} quanto piuttosto degli ulteriori riferimenti allo stesso. Questo viene
+realizzato dal kernel mantenendo per ciascun \textit{file lock} un
+puntatore\footnote{nel campo \var{fl\_file} di \var{file\_lock}.} al file
+nella \textit{file table} cui esso fa riferimento.
+
+
+che il kernel mantiene per ciascuno di
+essi\footnote{nel campo \var{fl\_file}.} anche un riferimento
+
+essi fanno riferimento al
+
+
+
+