Spiegazione sulla implementazione dei semafori e correzioni su alcuni
[gapil.git] / fileadv.tex
index 084f783b64f561fb0f5928646d3fd508a60f5be8..1932eca21a2f3a4a52260be2589a21ceb1f6e717 100644 (file)
@@ -1578,11 +1578,11 @@ chiudere un file descriptor per cancellare tutti i lock realtivi al file cui
 esso faceva riferimento, anche se questi fossero stati creati usando altri
 file descriptor che restano aperti.
 
-Come abbiamo visto come l'interfaccia POSIX per il file locking sia molto più
+Abbiamo visto come l'interfaccia POSIX per il file locking sia molto più
 potente e flessibile di quella di BSD, ma è anche molto più complicata da
-usare, specie in tutti quei casi in cui non si vogliono bloccare sezioni
-separate di file. Per questo, seguendo System V, è disponibile una interfaccia
-semplificata grazie alla funzione \func{lockf}, il cui prototipo è:
+usare. Per questo motivo è disponibile anche una interfaccia semplificata
+(ripresa da System V) che utilizza la funzione \func{lockf}, il cui prototipo
+è:
 \begin{prototype}{sys/file.h}{int lockf(int fd, int cmd, off\_t len)}
   
   Applica, controlla o rimuove un \textit{file lock} sul file \param{fd}.
@@ -1604,6 +1604,34 @@ semplificata grazie alla funzione \func{lockf}, il cui prototipo 
 
 Il comportamento della funzione dipende dal valore dell'argomento \param{cmd}
 che specifica quale azione eseguire; i valori possibili sono riportati in 
+\begin{table}[htb]
+  \centering
+  \footnotesize
+  \begin{tabular}[c]{|l|l|}
+    \hline
+    \textbf{Valore} & \textbf{Significato} \\
+    \hline
+    \hline
+    \macro{F\_LOCK} & Richiede un \textit{exclusive lock}. Se non può essere
+                      ottenuto a causa di un lock preesistente la funzione
+                      blocca il processo chiamante fino al rilascio di
+                      quest'ultimo. \\
+    \macro{F\_TLOCK}& Stesso comportamento di \macro{F\_LOCK} ma la funzione
+                      ritorna sempre subito, segnalando un errore quando il
+                      lock non può essere acquisito. \\
+    \macro{F\_ULOCK}& Sblocca il file.\\
+    \macro{F\_TEST} & Controlla il lock, la funzione restituisce 0 se il file
+                      non ha lock, o i lock appartengono al processo corrente,
+                      e -1, con un errore di \macro{EACCES}, se altri processi
+                      detengono un lock sul file.\\ 
+    \hline    
+  \end{tabular}
+  \caption{Valori possibili per il campo \var{cmd} di \func{lockf}.}
+  \label{tab:file_lockf_type}
+\end{table}
+
+
+
 
 \subsection{Il \textit{mandatory locking}}
 \label{sec:file_mand_locking}