Varie correzioni, completata revisione capitolo sull'I/O su file
[gapil.git] / fileadv.tex
index 45a5615e5b633d5e398bc3059de161c8e67a5148..c3300a6ef277e098005bea38a68695880067874f 100644 (file)
@@ -804,6 +804,17 @@ comportamento sui file duplicati e nel passaggio attraverso \func{fork} ed
 \func{exec}. Per questo stesso motivo la funzione non è equivalente a
 \func{flock} e può essere usata senza interferenze insieme a quest'ultima.
 
+
+\subsection{Gli \textit{open file descriptor locks}}
+\label{sec:open_file_descriptor_locks}
+
+Come illustrato in dettaglio nella precedente sez.~\ref{sec:file_posix_lock},
+la chiusura di un file su cui sono presenti dei \textit{file lock} comporta
+l'immediato rilascio degli stessi, anche se questi sono stati acquisiti da un
+processo diverso. 
+
+da finire.
+
 % TODO trattare i POSIX file-private lock introdotti con il 3.15, 
 % vedi http://lwn.net/Articles/586904/ correlato:
 % http://www.samba.org/samba/news/articles/low_point/tale_two_stds_os2.html 
@@ -1622,11 +1633,11 @@ viene totalmente ignorato e l'allocazione è sempre dinamica.
 La seconda versione della funzione, \func{epoll\_create1} è stata introdotta
 come estensione della precedente (è disponibile solo a partire dal kernel
 2.6.27) per poter passare dei flag di controllo come maschera binaria in fase
-di creazione del file descriptor. Al momento l'unico valore legale
-per \param{flags} (a parte lo zero) è \constd{EPOLL\_CLOEXEC}, che consente di
+di creazione del file descriptor. Al momento l'unico valore legale per
+\param{flags} (a parte lo zero) è \constd{EPOLL\_CLOEXEC}, che consente di
 impostare in maniera atomica sul file descriptor il flag di
-\textit{close-on-exec} (si è trattato il significato di \const{O\_CLOEXEC} in
-sez.~\ref{sec:file_open_close}), senza che sia necessaria una successiva
+\textit{close-on-exec} (vedi sez.~\ref{sec:proc_exec} e
+sez.~\ref{sec:file_shared_access}) senza che sia necessaria una successiva
 chiamata a \func{fcntl}.
 
 Una volta ottenuto un file descriptor per \textit{epoll} il passo successivo è
@@ -2197,7 +2208,7 @@ file descriptor restituito da \func{signalfd} cerca di seguire la semantica di
 un sistema unix-like anche con altre \textit{system call}; in particolare esso
 resta aperto (come ogni altro file descriptor) attraverso una chiamata ad
 \func{exec}, a meno che non lo si sia creato con il flag di
-\const{SFD\_CLOEXEC} o si sia successivamente impostato il
+\const{SFD\_CLOEXEC} o si sia successivamente impostato il 
 \textit{close-on-exec} con \func{fcntl}. Questo comportamento corrisponde
 anche alla ordinaria semantica relativa ai segnali bloccati, che restano
 pendenti attraverso una \func{exec}.
@@ -5817,17 +5828,32 @@ file uno \textit{sparse file} a posteriori.
 % vedi http://lwn.net/Articles/226710/ e http://lwn.net/Articles/240571/
 % http://kernelnewbies.org/Linux_2_6_23
 
+
 % TODO aggiungere FALLOC_FL_ZERO_RANGE e FALLOC_FL_COLLAPSE_RANGE, inseriti
 % nel kernel 3.15 (sul secondo vedi http://lwn.net/Articles/589260/), vedi
 % anche http://lwn.net/Articles/629965/
 
 % TODO aggiungere FALLOC_FL_INSERT vedi  http://lwn.net/Articles/629965/
 
+% TODO aggiungere i file hints di fcntl (F_GET_RW_HINT e compagnia)
+% con RWH_WRITE_LIFE_EXTREME e RWH_WRITE_LIFE_SHORT aggiunte con
+% il kernel 4.13 (vedi https://lwn.net/Articles/727385/)
+
+\subsection{Altre funzionalità avanzate}
+\label{sec:file_seal_et_al}
+
+da fare
 
 % TODO non so dove trattarli, ma dal 2.6.39 ci sono i file handle, vedi
 % http://lwn.net/Articles/432757/ (probabilmente da associare alle
 % at-functions) 
 
+% TODO: trattare i file seal, vedi fcntl / F_ADD_SEAL e memfd_create
+
+% TODO trattare qui ioctl_ficlonerange ?
+
+
+
 
 % LocalWords:  dell'I locking multiplexing cap sez system call socket BSD GID
 % LocalWords:  descriptor client deadlock NONBLOCK EAGAIN polling select kernel