X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileadv.tex;h=c91f34e72f1606437145dbab7c4b5833cc551311;hp=f4acfefe5a878b41947a462bcd6bac97d2a27785;hb=9a6d19e384fe9b1afbe4d9124ac34eaf7aa57562;hpb=847a6cd39fe3d885ececc0658dfa5a4862534627 diff --git a/fileadv.tex b/fileadv.tex index f4acfef..c91f34e 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -420,8 +420,8 @@ distinzione ha senso solo per i dati \textit{out-of-band} dei socket (vedi sez.~\ref{sec:TCP_urgent_data}), ma su questo e su come \func{poll} reagisce alle varie condizioni dei socket torneremo in sez.~\ref{sec:TCP_serv_poll}, dove vedremo anche un esempio del suo utilizzo. Si tenga conto comunque che le -costanti relative ai diversi tipi di dati (come \macro{POLLRDNORM} e -\macro{POLLRDBAND}) sono utilizzabili soltanto qualora si sia definita la +costanti relative ai diversi tipi di dati (come \const{POLLRDNORM} e +\const{POLLRDBAND}) sono utilizzabili soltanto qualora si sia definita la macro \macro{\_XOPEN\_SOURCE}.\footnote{e ci si ricordi di farlo sempre in testa al file, definirla soltanto prima di includere \file{sys/poll.h} non è sufficiente.} @@ -1127,7 +1127,7 @@ tab.~\ref{tab:file_mmap_flag}. visibili agli altri processi che mappano lo stesso file.\footnotemark Il file su disco però non sarà aggiornato fino alla chiamata di \func{msync} o - \func{unmap}), e solo allora le modifiche saranno + \func{munmap}), e solo allora le modifiche saranno visibili per l'I/O convenzionale. Incompatibile con \const{MAP\_PRIVATE}. \\ \const{MAP\_PRIVATE} & I cambiamenti sulla memoria mappata non vengono @@ -1547,14 +1547,14 @@ anche se richiesto attraverso un file descriptor, agisce sempre su un file; perciò le informazioni relative agli eventuali \textit{file lock} sono mantenute a livello di inode\index{inode},\footnote{in particolare, come accennato in fig.~\ref{fig:file_flock_struct}, i \textit{file lock} sono - mantenuti un una \textit{linked list}\index{linked list} di strutture - \struct{file\_lock}. La lista è referenziata dall'indirizzo di partenza - mantenuto dal campo \var{i\_flock} della struttura \struct{inode} (per le - definizioni esatte si faccia riferimento al file \file{fs.h} nei sorgenti - del kernel). Un bit del campo \var{fl\_flags} di specifica se si tratta di - un lock in semantica BSD (\const{FL\_FLOCK}) o POSIX (\const{FL\_POSIX}).} -dato che questo è l'unico riferimento in comune che possono avere due processi -diversi che aprono lo stesso file. + mantenuti un una \textit{linked~list}\index{\textit{linked list}} di + strutture \struct{file\_lock}. La lista è referenziata dall'indirizzo di + partenza mantenuto dal campo \var{i\_flock} della struttura \struct{inode} + (per le definizioni esatte si faccia riferimento al file \file{fs.h} nei + sorgenti del kernel). Un bit del campo \var{fl\_flags} di specifica se si + tratta di un lock in semantica BSD (\const{FL\_FLOCK}) o POSIX + (\const{FL\_POSIX}).} dato che questo è l'unico riferimento in comune che +possono avere due processi diversi che aprono lo stesso file. \begin{figure}[htb] \centering @@ -1801,7 +1801,8 @@ questo caso la titolarit voce nella file table, ma con il valore del \acr{pid} del processo. Quando si richiede un lock il kernel effettua una scansione di tutti i lock -presenti sul file\footnote{scandisce cioè la linked list delle strutture +presenti sul file\footnote{scandisce cioè la + \index{\textit{linked~list}}\textit{linked list} delle strutture \struct{file\_lock}, scartando automaticamente quelle per cui \var{fl\_flags} non è \const{FL\_POSIX}, così che le due interfacce restano ben separate.} per verificare se la regione richiesta non si sovrappone ad