Ancora revisione
[gapil.git] / fileadv.tex
index 72fa313f30aee049c21040f664637211563d5b98..6bbc00ce4c3889d033cf12e84a2c7adfb7c48a89 100644 (file)
@@ -1,6 +1,6 @@
 %% fileadv.tex
 %%
-%% Copyright (C) 2000-2016 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2018 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
@@ -1567,8 +1567,8 @@ sono state in discussione altre interfacce con le quali effettuare lo stesso
 tipo di operazioni; \textit{epoll} è in grado di operare sia in modalità
 \textit{level triggered} che \textit{edge triggered}.
 
-La prima versione di \textit{epoll} prevedeva l'apertura di uno speciale file
-di dispositivo, \texttt{/dev/epoll}, per ottenere un file descriptor da
+La prima versione di \textit{epoll} prevedeva l'uso di uno speciale file di
+dispositivo, \texttt{/dev/epoll}, per ottenere un file descriptor da
 utilizzare con le funzioni dell'interfaccia ma poi si è passati all'uso di
 apposite \textit{system call}.  Il primo passo per usare l'interfaccia di
 \textit{epoll} è pertanto quello ottenere detto file descriptor chiamando una
@@ -2192,9 +2192,9 @@ tal caso qualora vi fossero segnali pendenti questi resteranno tali, e
 potranno essere ricevuti normalmente una volta che si rimuova il blocco
 imposto con \func{sigprocmask}.
 
-Oltre che con le funzioni dell'\textit{I/O multiplexing} l'uso del 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
+Oltre a poter essere usato con le funzioni dell'\textit{I/O multiplexing}, il
+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
@@ -2221,7 +2221,7 @@ successivo con \func{fcntl}.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{0.90\textwidth}
+  \begin{minipage}[c]{0.95\textwidth}
     \includestruct{listati/signalfd_siginfo.h}
   \end{minipage} 
   \normalsize 
@@ -2251,8 +2251,8 @@ ad eventuali più segnali pendenti, fino al numero massimo di strutture
   \label{fig:fiforeporter_code_init}
 \end{figure}
 
-Il contenuto di \struct{signalfd\_siginfo} ricalca da vicino quella della
-analoga struttura \struct{siginfo\_t} (illustrata in
+Il contenuto di \struct{signalfd\_siginfo} ricalca da vicino quella
+dell'analoga struttura \struct{siginfo\_t} (illustrata in
 fig.~\ref{fig:sig_siginfo_t}) usata dall'interfaccia ordinaria dei segnali, e
 restituisce dati simili. Come per \struct{siginfo\_t} i campi che vengono
 avvalorati dipendono dal tipo di segnale e ricalcano i valori che abbiamo già
@@ -3860,6 +3860,7 @@ per il campo \var{aio\_sigevent} di \struct{aiocb}.
 % http://webfiveoh.com/content/guides/2012/aug/mon-13th/linux-asynchronous-io-and-libaio.html, 
 % https://code.google.com/p/kernel/wiki/AIOUserGuide,
 % http://bert-hubert.blogspot.de/2012/05/on-linux-asynchronous-file-io.html 
+% https://www.fsl.cs.sunysb.edu/~vass/linux-aio.txt
 
 
 \section{Altre modalità di I/O avanzato}
@@ -4109,6 +4110,9 @@ file.
 % TODO trattare MAP_HUGETLB introdotto con il kernel 2.6.32, e modifiche
 % introdotte con il 3.8 per le dimensioni variabili delle huge pages
 
+% TODO trattare  MAP_FIXED_NOREPLACE vedi https://lwn.net/Articles/751651/ e
+% https://lwn.net/Articles/741369/ 
+
 L'argomento \param{flags} specifica infine qual è il tipo di oggetto mappato,
 le opzioni relative alle modalità con cui è effettuata la mappatura e alle
 modalità con cui le modifiche alla memoria mappata vengono condivise o
@@ -4686,6 +4690,10 @@ caching dei dati.
 \end{table}
 
 % TODO aggiunta MADV_FREE dal kernel 4.5 (vedi http://lwn.net/Articles/590991/)
+% TODO aggiunta MADV_WIPEONFORK dal kernel 4.14 that causes the affected memory
+% region to appear to be full of zeros in the child process after a fork. It
+% differs from the existing MADV_DONTFORK in that the address range will
+% remain valid in the child (dalla notizia in https://lwn.net/Articles/733256/).  
 
 \footnotetext{a partire dal kernel 2.6.32 è stato introdotto un meccanismo che
   identifica pagine di memoria identiche e le accorpa in una unica pagina
@@ -4904,7 +4912,9 @@ descriptor (si ricordi quanto visto in sez.~\ref{sec:file_adv_func}) con delle
 chiamate a \func{lseek}.
 
 % TODO trattare preadv2() e pwritev2(), introdotte con il kernel 4.6, vedi
-% http://lwn.net/Articles/670231/ ed il flag RWF_HIPRI
+% http://lwn.net/Articles/670231/ ed il flag RWF_HIPRI, anche l'aggiunta del
+% flag RWF_APPEND a pwritev2 con il kernel 4.16, vedi
+% https://lwn.net/Articles/746129/ 
 
 
 \subsection{L'I/O diretto fra file descriptor: \func{sendfile} e