GaPiL - Istruzioni per la "compilazione"
--------
+-----
Dato che il testo e` scritto in LaTeX e` necessario "compilarlo" per
-poter ottenre un formato stampabile.
+poter ottenere un formato stampabile.
Dato l'uso intensivo di vari pacchetti e le dimensioni del tutto, per
poter compilare il testo completo di GaPiL occorre aumentare le
(prima si devono aver generato le figure con make)
+Attenzione: a partire da fine Ottobre 2002, per un motivo che non sono
+ancora riuscito a capire, viene generato un errore alla fine del file
+session.tex. Il codice e` corretto, cio` non ostante latex si ferma ed
+occorre farlo proseguire premendo invio.
+
La prima modalità di file locking che è stata implementata nei sistemi
unix-like è quella che viene usualmente chiamata \textit{advisory locking}, in
-quanto è il processo, e non il sistema, che si incarica di verificare se
-esiste una condizione di blocco per l'accesso ai file.
+quanto sono i singoli processi, e non il sistema, che si incaricano di
+asserire e verificare se esistono delle condizioni di blocco per l'accesso ai
+file. Questo significa che le funzioni \func{read} o \func{write} non
+risentono affatto della presenza di un eventuale blocco, e che sta ai vari
+processi controllare esplicitamente lo stato dei file condivisi prima di
+accedervi ed implementare opportunamente un protocollo di accesso.
+
+In Linux sono disponibili due interfacce per utilizzare l'\textit{advisory
+ locking}, la prima è quella derivata da BSD, che è basata sulla funzione
+\func{flock}, la seconda è quella standardizzata da POSIX.1 (originaria di
+System V), che è basata sulla funzione \func{fcntl}. I \textit{file lock}
+sono implementati in maniera completamente indipendente nelle due interfacce,
+che pertanto possono coesistere senza interferenze.
+
+L'interfaccia classica usata da BSD permette di eseguire il blocco solo su un
+intero file, come accennato essa è basata sulla funzione \func{flock}, il cui
+prototipo è:
+\begin{prototype}{sys/file.h}{int flock(int fd, int operation)}
+
+ Applica o rimuove un blocco sul file \param{fd}.
+
+ \bodydesc{La funzione restituisce 0 in caso di successo, e -1 in caso di
+ errore, nel qual caso \var{errno} assumerà uno dei valori:
+ \begin{errlist}
+ \item[\macro{EWOULDBLOCK}] Il file ha già un blocco attivo, e si è
+ specificato \macro{LOCK\_NB}.
+ \end{errlist}
+ }
+\end{prototype}
+Il comportamento della funzione è specificato dal valore di \param{operation},
+che è espresso come maschera binaria,