% TODO: dal 4.17 CLOCK_MONOTONIC e CLOCK_BOOTTIME sono identici vedi
% https://lwn.net/Articles/751651/ e
-% https://git.kernel.org/linus/d6ed449afdb38f89a7b38ec50e367559e1b8f71f
+% https://git.kernel.org/linus/d6ed449afdb38f89a7b38ec50e367559e1b8f71f
+% change reverted, vedi: https://lwn.net/Articles/752757/
+
% NOTE: dal 3.0 anche i cosiddetti Posix Alarm Timers, con
% CLOCK_REALTIME_ALARM vedi http://lwn.net/Articles/429925/
Da fare
+
+% TODO: note su MSG_ZEROCOPY/SOCK_ZEROCOPY, aggiunte con il kernel 4.14 (e per
+% la ricezione con il kernel 4.18, vedi https://lwn.net/Articles/726917/ e
+% https://lwn.net/Articles/752300/
+
\subsection{La funzioni \func{sendmsg} e \func{recvmsg}}
\label{sec:net_sendmsg}
segnalando ad una \func{select} (vedi sez.~\ref{sec:TCP_sock_select}) che ci
sono dati in ingresso. L'opzione utilizza per \param{optval} un intero che
specifica il numero di byte; con Linux questo valore è sempre 1 e può essere
- cambiato solo con i kernel a partire dal 2.4. Si tenga presente però che
- \func{poll} e \func{select} non supportano ancora questa funzionalità e
- ritornano comunque, indicando il socket come leggibile, non appena almeno un
- byte è presente mentre in una successiva lettura \func{read} si bloccherà
- fintanto che non siano disponibili la quantità di byte indicati. Con
- \func{getsockopt} si può leggere questo valore mentre \func{setsockopt} darà
- un errore di \errcode{ENOPROTOOPT} quando il cambiamento non è supportato.
+ cambiato solo con i kernel a partire dal 2.4. Si tenga presente però che per
+ i kernel prima del 2.6.28 sia \func{poll} che \func{select} non supportano
+ questa funzionalità e ritornano comunque, indicando il socket come
+ leggibile, non appena almeno un byte è presente, con una successiva lettura
+ con \func{read} che si blocca fintanto che non diventa disponibile la
+ quantità di byte indicati. Con \func{getsockopt} si può leggere questo
+ valore mentre \func{setsockopt} darà un errore di \errcode{ENOPROTOOPT}
+ quando il cambiamento non è supportato.
\item[\constd{SO\_RCVTIMEO}] l'opzione permette di impostare un tempo massimo
sulle operazioni di lettura da un socket, e prende per \param{optval} una