levato di mezzo l'uso improprio di settare e default
[gapil.git] / fileadv.tex
index 40dc7a50fe7f6b7dba6cdea07f6ed4699de324ea..687d7cd52403e07036170e3d91eab53b0ab959df 100644 (file)
@@ -78,7 +78,7 @@ con la funzione \func{select}, il cui prototipo 
   
   \bodydesc{La funzione in caso di successo restituisce il numero di file
     descriptor (anche nullo) che sono attivi, e -1 in caso di errore, nel qual
   
   \bodydesc{La funzione in caso di successo restituisce il numero di file
     descriptor (anche nullo) che sono attivi, e -1 in caso di errore, nel qual
-    caso \var{errno} viene settata ai valori:
+    caso \var{errno} viene impostata ai valori:
   \begin{errlist}
   \item[\macro{EBADF}] Si è specificato un file descriptor sbagliato in uno
   degli insiemi.
   \begin{errlist}
   \item[\macro{EBADF}] Si è specificato un file descriptor sbagliato in uno
   degli insiemi.
@@ -141,9 +141,9 @@ pi
 
 Infine l'argomento \param{timeout}, specifica un tempo massimo di
 attesa\footnote{il tempo è valutato come \textit{elapsed time}.} prima che la
 
 Infine l'argomento \param{timeout}, specifica un tempo massimo di
 attesa\footnote{il tempo è valutato come \textit{elapsed time}.} prima che la
-funzione ritorni; se settato a \macro{NULL} la funzione attende
+funzione ritorni; se impostato a \macro{NULL} la funzione attende
 indefinitamente. Si può specificare anche un tempo nullo (cioè una \var{struct
 indefinitamente. Si può specificare anche un tempo nullo (cioè una \var{struct
-  timeval} con i campi settati a zero), qualora si voglia semplicemente
+  timeval} con i campi impostati a zero), qualora si voglia semplicemente
 controllare lo stato corrente dei file descriptor.
 
 La funzione restituisce il totale dei file descriptor pronti nei tre insiemi,
 controllare lo stato corrente dei file descriptor.
 
 La funzione restituisce il totale dei file descriptor pronti nei tre insiemi,
@@ -153,16 +153,17 @@ operazioni ad esso relative, in modo da poterlo controllare con la macro
 \macro{FD\_ISSET}. In caso di errore la funzione restituisce -1 e gli insiemi
 non vengono toccati.
 
 \macro{FD\_ISSET}. In caso di errore la funzione restituisce -1 e gli insiemi
 non vengono toccati.
 
-In Linux \func{select} modifica anche il valore di \param{timeout}, settandolo
-al tempo restante; questo è utile quando la funzione viene interrotta da un
-segnale, in tal caso infatti si ha un errore di \macro{EINTR}, ed occorre
-rilanciare la funzione; in questo modo non è necessario ricalcolare tutte le
-volte il tempo rimanente.\footnote{questo può causare problemi di portabilità
-  sia quando si trasporta codice scritto su Linux che legge questo valore, sia
-  quando si usano programmi scritti per altri sistemi che non dispongono di
-  questa caratteristica e ricalcolano \param{timeout} tutte le volte. In
-  genere la caratteristica è disponibile nei sistemi che derivano da System V
-  e non disponibile per quelli che derivano da BSD.}
+In Linux \func{select} modifica anche il valore di \param{timeout},
+impostandolo al tempo restante; questo è utile quando la funzione viene
+interrotta da un segnale, in tal caso infatti si ha un errore di
+\macro{EINTR}, ed occorre rilanciare la funzione; in questo modo non è
+necessario ricalcolare tutte le volte il tempo rimanente.\footnote{questo può
+  causare problemi di portabilità sia quando si trasporta codice scritto su
+  Linux che legge questo valore, sia quando si usano programmi scritti per
+  altri sistemi che non dispongono di questa caratteristica e ricalcolano
+  \param{timeout} tutte le volte. In genere la caratteristica è disponibile
+  nei sistemi che derivano da System V e non disponibile per quelli che
+  derivano da BSD.}
 
 Come accennato l'interfaccia di \func{select} è una estensione di BSD; anche
 System V ha introdotto una sua interfaccia per gestire l'\textit{I/O
 
 Come accennato l'interfaccia di \func{select} è una estensione di BSD; anche
 System V ha introdotto una sua interfaccia per gestire l'\textit{I/O
@@ -177,7 +178,7 @@ specificati da \param{ufds}.
   
 \bodydesc{La funzione restituisce il numero di file descriptor con attività in
   caso di successo, o 0 se c'è stato un timeout; in caso di errore viene
   
 \bodydesc{La funzione restituisce il numero di file descriptor con attività in
   caso di successo, o 0 se c'è stato un timeout; in caso di errore viene
-  restituito  -1 ed \var{errno} viene settata ai valori:
+  restituito  -1 ed \var{errno} viene impostata ai valori:
   \begin{errlist}
   \item[\macro{EBADF}] Si è specificato un file descriptor sbagliato in uno
   degli insiemi.
   \begin{errlist}
   \item[\macro{EBADF}] Si è specificato un file descriptor sbagliato in uno
   degli insiemi.
@@ -248,10 +249,10 @@ vengono utilizzati solo per \var{revents} come valori in uscita).
 \end{table}
 
 La funzione ritorna, restituendo il numero di file per i quali si è verificata
 \end{table}
 
 La funzione ritorna, restituendo il numero di file per i quali si è verificata
-una delle condizioni di attesa richieste o un errore. Lo stato dei file
+una delle condizioni di attesa richieste od un errore. Lo stato dei file
 all'uscita della funzione viene restituito nel campo \var{revents} della
 all'uscita della funzione viene restituito nel campo \var{revents} della
-relativa struttura \type{pollfd}, che viene settato alla maschera binaria dei
-valori riportati in \tabref{tab:file_pollfd_flags}, ed oltre alle tre
+relativa struttura \type{pollfd}, che viene impostato alla maschera binaria
+dei valori riportati in \tabref{tab:file_pollfd_flags}, ed oltre alle tre
 condizioni specificate tramite \var{events} può riportare anche l'occorrere di
 una condizione di errore.
 
 condizioni specificate tramite \var{events} può riportare anche l'occorrere di
 una condizione di errore.
 
@@ -277,7 +278,7 @@ sostituisce i precedenti, ed aggiunge a \func{select} una nuova funzione
   
   \bodydesc{La funzione in caso di successo restituisce il numero di file
     descriptor (anche nullo) che sono attivi, e -1 in caso di errore, nel qual
   
   \bodydesc{La funzione in caso di successo restituisce il numero di file
     descriptor (anche nullo) che sono attivi, e -1 in caso di errore, nel qual
-    caso \var{errno} viene settata ai valori:
+    caso \var{errno} viene impostata ai valori:
   \begin{errlist}
   \item[\macro{EBADF}] Si è specificato un file descriptor sbagliato in uno
   degli insiemi.
   \begin{errlist}
   \item[\macro{EBADF}] Si è specificato un file descriptor sbagliato in uno
   degli insiemi.
@@ -299,7 +300,7 @@ L'uso di \param{sigmask} 
 race condition\footnote{in Linux però, non esistendo una system call apposita,
   la funzione è implementata nelle \acr{glibc} usando \func{select}, e la
   possibilità di una race condition resta.} quando si deve eseguire un test su
 race condition\footnote{in Linux però, non esistendo una system call apposita,
   la funzione è implementata nelle \acr{glibc} usando \func{select}, e la
   possibilità di una race condition resta.} quando si deve eseguire un test su
-una variabile settata da un manipolatore sulla base dell'occorrenza di un
+una variabile assegnata da un manipolatore sulla base dell'occorrenza di un
 segnale per decidere se lanciare \func{select}. Fra il test e l'esecuzione è
 presente una finestra in cui potrebbe arrivare il segnale che non sarebbe
 rilevato; la race condition diventa superabile disabilitando il segnale prima
 segnale per decidere se lanciare \func{select}. Fra il test e l'esecuzione è
 presente una finestra in cui potrebbe arrivare il segnale che non sarebbe
 rilevato; la race condition diventa superabile disabilitando il segnale prima
@@ -322,9 +323,9 @@ Abbiamo accennato in \secref{sec:file_open} che 
 del flag \macro{O\_ASYNC},\footnote{l'uso del flag di \macro{O\_ASYNC} e dei
   comandi \macro{F\_SETOWN} e \macro{F\_GETOWN} per \func{fcntl} è specifico
   di Linux e BSD.} aprire un file in modalità asincrona, così come è possibile
 del flag \macro{O\_ASYNC},\footnote{l'uso del flag di \macro{O\_ASYNC} e dei
   comandi \macro{F\_SETOWN} e \macro{F\_GETOWN} per \func{fcntl} è specifico
   di Linux e BSD.} aprire un file in modalità asincrona, così come è possibile
-attivare in un secondo tempo questa modalità settando questo flag attraverso
+attivare in un secondo tempo questa modalità impostando questo flag attraverso
 l'uso di \func{fcntl} con il comando \macro{F\_SETFL} (vedi
 l'uso di \func{fcntl} con il comando \macro{F\_SETFL} (vedi
-\secref{sec:file_fcntl}). 
+\secref{sec:file_fcntl}).
 
 In realtà in questo caso non si tratta di I/O asincrono vero e proprio, quanto
 di un meccanismo asincrono di notifica delle variazione dello stato del file
 
 In realtà in questo caso non si tratta di I/O asincrono vero e proprio, quanto
 di un meccanismo asincrono di notifica delle variazione dello stato del file
@@ -351,9 +352,9 @@ attraverso la struttura \type{siginfo\_t}, utilizzando la forma estesa
 \secref{sec:sig_sigaction}).
 
 Per far questo però occorre utilizzare le funzionalità dei segnali real-time
 \secref{sec:sig_sigaction}).
 
 Per far questo però occorre utilizzare le funzionalità dei segnali real-time
-(vedi \secref{sec:sig_real_time}) settando esplicitamente con il comando
+(vedi \secref{sec:sig_real_time}) imopstando esplicitamente con il comando
 \macro{F\_SETSIG} di \func{fcntl} un segnale real-time da inviare in caso di
 \macro{F\_SETSIG} di \func{fcntl} un segnale real-time da inviare in caso di
-I/O asincrono (il segnale di default è \macro{SIGIO}). In questo caso il
+I/O asincrono (il segnale predefinito è \macro{SIGIO}). In questo caso il
 manipolatore tutte le volte che riceverà \macro{SI\_SIGIO} come valore del
 campo \var{si\_code}\footnote{il valore resta \macro{SI\_SIGIO} qualunque sia
   il segnale che si è associato all'I/O asincrono, ed indica appunto che il
 manipolatore tutte le volte che riceverà \macro{SI\_SIGIO} come valore del
 campo \var{si\_code}\footnote{il valore resta \macro{SI\_SIGIO} qualunque sia
   il segnale che si è associato all'I/O asincrono, ed indica appunto che il
@@ -436,13 +437,13 @@ sul file da cui i dati saranno letti o scritti.  Nel campo \var{aio\_buf} deve
 essere specificato l'indirizzo del buffer usato per l'I/O, ed in
 \var{aio\_nbytes} la lunghezza del blocco di dati da trasferire.
 
 essere specificato l'indirizzo del buffer usato per l'I/O, ed in
 \var{aio\_nbytes} la lunghezza del blocco di dati da trasferire.
 
-Il campo \var{aio\_reqprio} permette di settare la priorità delle operazioni
+Il campo \var{aio\_reqprio} permette di impostare la priorità delle operazioni
 di I/O.\footnote{in generale perché ciò sia possibile occorre che la
   piattaforma supporti questa caratteristica, questo viene indicato definendo
   le macro \macro{\_POSIX\_PRIORITIZED\_IO}, e
 di I/O.\footnote{in generale perché ciò sia possibile occorre che la
   piattaforma supporti questa caratteristica, questo viene indicato definendo
   le macro \macro{\_POSIX\_PRIORITIZED\_IO}, e
-  \macro{\_POSIX\_PRIORITY\_SCHEDULING}.} La priorità viene settata a partire
-da quella del processo chiamante (vedi \secref{sec:proc_priority}), cui viene
-sottratto il valore di questo campo.
+  \macro{\_POSIX\_PRIORITY\_SCHEDULING}.} La priorità viene impostata a
+partire da quella del processo chiamante (vedi \secref{sec:proc_priority}),
+cui viene sottratto il valore di questo campo.
 
 Il campo \var{aio\_lio\_opcode} è usato soltanto dalla funzione
 \func{lio\_listio}, che, come vedremo più avanti, permette di eseguire con una
 
 Il campo \var{aio\_lio\_opcode} è usato soltanto dalla funzione
 \func{lio\_listio}, che, come vedremo più avanti, permette di eseguire con una
@@ -502,7 +503,7 @@ appena descritta; i rispettivi prototipi sono:
   \param{aiocbp}.
   
   \bodydesc{Le funzioni restituiscono 0 in caso di successo, e -1 in caso di
   \param{aiocbp}.
   
   \bodydesc{Le funzioni restituiscono 0 in caso di successo, e -1 in caso di
-    errore, nel qual caso \var{errno} viene settata ai valori:
+    errore, nel qual caso \var{errno} viene impostata ai valori:
   \begin{errlist}
   \item[\macro{EBADF}] Si è specificato un file descriptor sbagliato.
   \item[\macro{ENOSYS}] La funzione non è implementata.
   \begin{errlist}
   \item[\macro{EBADF}] Si è specificato un file descriptor sbagliato.
   \item[\macro{ENOSYS}] La funzione non è implementata.
@@ -561,9 +562,9 @@ errore; il suo prototipo 
 Se l'operazione non si è ancora completata viene restituito l'errore di
 \macro{EINPROGRESS}. La funzione ritorna zero quando l'operazione si è
 conclusa con successo, altrimenti restituisce il codice dell'errore
 Se l'operazione non si è ancora completata viene restituito l'errore di
 \macro{EINPROGRESS}. La funzione ritorna zero quando l'operazione si è
 conclusa con successo, altrimenti restituisce il codice dell'errore
-verificatosi, ed esegue il corrispondente settaggio di \var{errno}. Il codice
-può essere sia \macro{EINVAL} ed \macro{EBADF}, dovuti ad un valore errato per
-\param{aiocbp}, che uno degli errori possibili durante l'esecuzione
+verificatosi, ed esegue la corrispondente impostazione di \var{errno}. Il
+codice può essere sia \macro{EINVAL} ed \macro{EBADF}, dovuti ad un valore
+errato per \param{aiocbp}, che uno degli errori possibili durante l'esecuzione
 dell'operazione di I/O richiesta, nel qual caso saranno restituiti, a seconda
 del caso, i codici di errore delle system call \func{read}, \func{write} e
 \func{fsync}.
 dell'operazione di I/O richiesta, nel qual caso saranno restituiti, a seconda
 del caso, i codici di errore delle system call \func{read}, \func{write} e
 \func{fsync}.
@@ -639,7 +640,7 @@ da \param{aiocbp}.
   
 \bodydesc{La funzione restituisce il risultato dell'operazione con un codice
   di positivo, e -1 in caso di errore, che avviene qualora si sia specificato
   
 \bodydesc{La funzione restituisce il risultato dell'operazione con un codice
   di positivo, e -1 in caso di errore, che avviene qualora si sia specificato
-  un valore non valido di \param{fildes}, setta \var{errno} al valore
+  un valore non valido di \param{fildes}, imposta \var{errno} al valore
   \macro{EBADF}.}
 \end{prototype}
 
   \macro{EBADF}.}
 \end{prototype}
 
@@ -683,7 +684,7 @@ specifica operazione; il suo prototipo 
   
   \bodydesc{La funzione restituisce 0 se una (o più) operazioni sono state
     completate, e -1 in caso di errore nel qual caso \var{errno} viene
   
   \bodydesc{La funzione restituisce 0 se una (o più) operazioni sono state
     completate, e -1 in caso di errore nel qual caso \var{errno} viene
-    settata ai valori:
+    impostata ai valori:
     \begin{errlist}
     \item[\macro{EAGAIN}] Nessuna operazione è stata completata entro
       \param{timeout}.
     \begin{errlist}
     \item[\macro{EAGAIN}] Nessuna operazione è stata completata entro
       \param{timeout}.
@@ -714,7 +715,7 @@ lettura o scrittura; il suo prototipo 
   secondo la modalità \param{mode}.
   
   \bodydesc{La funzione restituisce 0 in caso di successo, e -1 in caso di
   secondo la modalità \param{mode}.
   
   \bodydesc{La funzione restituisce 0 in caso di successo, e -1 in caso di
-    errore, nel qual caso \var{errno} viene settata ai valori:
+    errore, nel qual caso \var{errno} viene impostata ai valori:
     \begin{errlist}
     \item[\macro{EAGAIN}] Nessuna operazione è stata completata entro
       \param{timeout}.
     \begin{errlist}
     \item[\macro{EAGAIN}] Nessuna operazione è stata completata entro
       \param{timeout}.
@@ -744,7 +745,7 @@ funzione, se viene specificato il valore \macro{LIO\_WAIT} la funzione si
 blocca fino al completamento di tutte le operazioni richieste; se invece si
 specifica \macro{LIO\_NOWAIT} la funzione ritorna immediatamente dopo aver
 messo in coda tutte le richieste. In questo caso il chiamante può richiedere
 blocca fino al completamento di tutte le operazioni richieste; se invece si
 specifica \macro{LIO\_NOWAIT} la funzione ritorna immediatamente dopo aver
 messo in coda tutte le richieste. In questo caso il chiamante può richiedere
-la notifica del completamento di tutte le richieste, settando l'argomento
+la notifica del completamento di tutte le richieste, impostando l'argomento
 \param{sig} in maniera analoga a come si fa per il campo \var{aio\_sigevent}
 di \type{aiocb}.
 
 \param{sig} in maniera analoga a come si fa per il campo \var{aio\_sigevent}
 di \type{aiocb}.
 
@@ -782,7 +783,7 @@ sono:
   
   \bodydesc{Le funzioni restituiscono il numero di byte letti o scritti in
     caso di successo, e -1 in caso di errore, nel qual caso \var{errno} viene
   
   \bodydesc{Le funzioni restituiscono il numero di byte letti o scritti in
     caso di successo, e -1 in caso di errore, nel qual caso \var{errno} viene
-    settata ai valori:
+    impostata ai valori:
   \begin{errlist}
   \item[\macro{EBADF}] si è specificato un file descriptor sbagliato.
   \item[\macro{EINVAL}] si è specificato un valore non valido per uno degli
   \begin{errlist}
   \item[\macro{EBADF}] si è specificato un file descriptor sbagliato.
   \item[\macro{EINVAL}] si è specificato un valore non valido per uno degli
@@ -872,21 +873,21 @@ memoria un file; il suo prototipo 
   
   \bodydesc{La funzione restituisce il puntatore alla zona di memoria mappata
     in caso di successo, e \macro{MAP\_FAILED} (-1) in caso di errore, nel
   
   \bodydesc{La funzione restituisce il puntatore alla zona di memoria mappata
     in caso di successo, e \macro{MAP\_FAILED} (-1) in caso di errore, nel
-    qual caso \var{errno} viene settata ai valori:
+    qual caso \var{errno} viene impostata ai valori:
     \begin{errlist}
     \item[\macro{EBADF}] Il file descriptor non è valido, e non si è usato
       \macro{MAP\_ANONYMOUS}.
     \item[\macro{EACCES}] Il file descriptor non si riferisce ad un file
     \begin{errlist}
     \item[\macro{EBADF}] Il file descriptor non è valido, e non si è usato
       \macro{MAP\_ANONYMOUS}.
     \item[\macro{EACCES}] Il file descriptor non si riferisce ad un file
-      normale, o si è richiesto \macro{MAP\_PRIVATE} ma \param{fd} non è
-      aperto in lettura, o si è richiesto \macro{MAP\_SHARED} e settato
+      regolare, o si è richiesto \macro{MAP\_PRIVATE} ma \param{fd} non è
+      aperto in lettura, o si è richiesto \macro{MAP\_SHARED} e impostato
       \macro{PROT\_WRITE} ed \param{fd} non è aperto in lettura/scrittura, o
       \macro{PROT\_WRITE} ed \param{fd} non è aperto in lettura/scrittura, o
-      si è settato \macro{PROT\_WRITE} ed \param{fd} è in
+      si è impostato \macro{PROT\_WRITE} ed \param{fd} è in
       \textit{append-only}.
     \item[\macro{EINVAL}] I valori di \param{start}, \param{length} o
       \param{offset} non sono validi (o troppo grandi o non allineati sulla
       dimensione delle pagine).
       \textit{append-only}.
     \item[\macro{EINVAL}] I valori di \param{start}, \param{length} o
       \param{offset} non sono validi (o troppo grandi o non allineati sulla
       dimensione delle pagine).
-    \item[\macro{ETXTBSY}] Si è settato \macro{MAP\_DENYWRITE} ma \param{fd} è
-      aperto in scrittura.
+    \item[\macro{ETXTBSY}] Si è impostato \macro{MAP\_DENYWRITE} ma \param{fd}
+      è aperto in scrittura.
     \item[\macro{EAGAIN}] Il file è bloccato, o si è bloccata troppa memoria.
     \item[\macro{ENOMEM}] Non c'è memoria o si è superato il limite sul numero
       di mappature possibili.
     \item[\macro{EAGAIN}] Il file è bloccato, o si è bloccata troppa memoria.
     \item[\macro{ENOMEM}] Non c'è memoria o si è superato il limite sul numero
       di mappature possibili.
@@ -948,7 +949,7 @@ come maschera binaria ottenuta dall'OR di uno o pi
     \hline
     \macro{MAP\_FIXED}     & Non permette di restituire un indirizzo diverso
                              da \param{start}, se questo non può essere usato
     \hline
     \macro{MAP\_FIXED}     & Non permette di restituire un indirizzo diverso
                              da \param{start}, se questo non può essere usato
-                             \func{mmap} fallisce. Se si setta questo flag il
+                             \func{mmap} fallisce. Se si imposta questo flag il
                              valore di \param{start} deve essere allineato
                              alle dimensioni di una pagina. \\
     \macro{MAP\_SHARED}    & I cambiamenti sulla memoria mappata vengono
                              valore di \param{start} deve essere allineato
                              alle dimensioni di una pagina. \\
     \macro{MAP\_SHARED}    & I cambiamenti sulla memoria mappata vengono
@@ -980,7 +981,7 @@ come maschera binaria ottenuta dall'OR di uno o pi
                              questo caso dopo una scrittura, se non c'è più
                              memoria disponibile, si ha l'emissione di
                              un \macro{SIGSEGV}. \\
                              questo caso dopo una scrittura, se non c'è più
                              memoria disponibile, si ha l'emissione di
                              un \macro{SIGSEGV}. \\
-    \macro{MAP\_LOCKED}    & Se settato impedisce lo swapping delle pagine
+    \macro{MAP\_LOCKED}    & Se impostato impedisce lo swapping delle pagine
                              mappate. \\
     \macro{MAP\_GROWSDOWN} & Usato per gli stack. Indica 
                              che la mappatura deve essere effettuata con gli
                              mappate. \\
     \macro{MAP\_GROWSDOWN} & Usato per gli stack. Indica 
                              che la mappatura deve essere effettuata con gli
@@ -1067,7 +1068,7 @@ contenuto della memoria mappata con il file su disco; il suo prototipo 
   Sincronizza i contenuti di una sezione di un file mappato in memoria.
   
   \bodydesc{La funzione restituisce 0 in caso di successo, e -1 in caso di
   Sincronizza i contenuti di una sezione di un file mappato in memoria.
   
   \bodydesc{La funzione restituisce 0 in caso di successo, e -1 in caso di
-    errore nel qual caso \var{errno} viene settata ai valori:
+    errore nel qual caso \var{errno} viene impostata ai valori:
     \begin{errlist}
     \item[\macro{EINVAL}] O \param{start} non è multiplo di \macro{PAGESIZE},
     o si è specificato un valore non valido per \param{flags}.
     \begin{errlist}
     \item[\macro{EINVAL}] O \param{start} non è multiplo di \macro{PAGESIZE},
     o si è specificato un valore non valido per \param{flags}.
@@ -1123,7 +1124,7 @@ mappatura della memoria usando la funzione \func{munmap}, il suo prototipo 
   Rilascia la mappatura sulla sezione di memoria specificata.
 
   \bodydesc{La funzione restituisce 0 in caso di successo, e -1 in caso di
   Rilascia la mappatura sulla sezione di memoria specificata.
 
   \bodydesc{La funzione restituisce 0 in caso di successo, e -1 in caso di
-    errore nel qual caso \var{errno} viene settata ai valori:
+    errore nel qual caso \var{errno} viene impostata ai valori:
     \begin{errlist}
     \item[\macro{EINVAL}] L'intervallo specificato non ricade in una zona
       precedentemente mappata.
     \begin{errlist}
     \item[\macro{EINVAL}] L'intervallo specificato non ricade in una zona
       precedentemente mappata.
@@ -1179,9 +1180,23 @@ esiste una condizione di blocco per l'accesso ai file.
 \subsection{Il \textit{mandatory locking}}
 \label{sec:file_mand_locking}
 
 \subsection{Il \textit{mandatory locking}}
 \label{sec:file_mand_locking}
 
-Il \textit{mandatory locking} è una opzione introdotta inizialmente in SVr4, 
-
-
+Il \textit{mandatory locking} è una opzione introdotta inizialmente in SVr4,
+per introdurre un file locking che come dice il nome, fosse effettivo
+indipendentemente dai controlli eseguiti da un processo. Con il
+\textit{mandatory locking} infatti è possibile far eseguire il blocco del file
+direttamente al sistema, così che anche qualora non si predisponessero le
+opportune verifiche nei processi, questo verrebbe comunque rispettato.
+
+Per poter utilizzare il \textit{mandatory locking} è stato introdotto un
+utilizzo particolare del bit \acr{suid}. Se si ricorda quanto esposto in
+\secref{sec:file_suid_sgid}), esso viene di norma utlizzato per cambiare
+l'\textit{effective user ID} con cui viene eseguito un programma, ed è
+pertanto sempre associato alla presenza del permesso di esecuzione. Impostando
+questo bit su un file senza permesso di esecuzione in un sistema che supporta
+il \textit{mandatory locking}, fa sì che quest'ultimo venga attivato per il
+file in questione. In questo modo una combinaizone dei permessi
+originariamente non contemplata, in quanto senza significato, diventa
+l'indicazione della presenza o meno del \textit{mandatory locking}.