Merge branch 'master' of ssh://gapil.gnulinux.it/srv/git/gapil
authorSimone Piccardi <piccardi@truelite.it>
Wed, 6 Jan 2021 15:47:54 +0000 (16:47 +0100)
committerSimone Piccardi <piccardi@truelite.it>
Wed, 6 Jan 2021 15:47:54 +0000 (16:47 +0100)
fileadv.tex
fileio.tex
listati/siginfo_t.h
procadv.tex
signal.tex

index 00dbf3b8ef69647bf24db4a78a59355a999d9400..4775a6827a196befafa04432deeff23fe3f3689a 100644 (file)
@@ -2788,6 +2788,9 @@ definita la macro \macro{\_GNU\_SOURCE} prima di includere \headfile{fcntl.h}.
 
 \itindbeg{file~lease} 
 
+% TODO: questa funzionalità potrebbe essere estesa vedi:
+% https://lwn.net/Articles/796000/ 
+
 La prima di queste funzionalità è quella del cosiddetto \textit{file lease};
 questo è un meccanismo che consente ad un processo, detto \textit{lease
   holder}, di essere notificato quando un altro processo, chiamato a sua volta
@@ -4721,7 +4724,11 @@ caching dei dati.
 % 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/).  
+% remain valid in the child (dalla notizia in
+% https://lwn.net/Articles/733256/).
+% TODO aggiunte MADV_COLD e MADV_PAGEOUT dal kernel 5.4, vedi
+% https://git.kernel.org/linus/9c276cc65a58 e
+% https://git.kernel.org/linus/1a4e58cce84e 
 
 \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
index 3bd9db3a35f5f7178ccaad31f171849d57bd0ae0..f6305620b9426ac36594e44fc7ac552760a7def3 100644 (file)
@@ -1847,6 +1847,9 @@ riferimento ad una directory, tranne il caso in cui si sia specificato un
 \textit{pathname} assoluto, nel qual caso, come detto, il valore di
 \param{dirfd} sarà completamente ignorato.
 
+% TODO: trattare openat2, introdotta con il kernel 5.6, vedi
+% https://lwn.net/Articles/796868/ e https://git.kernel.org/linus/b55eef872a96
+
 \begin{table}[htb]
   \centering
   \footnotesize
@@ -1971,6 +1974,9 @@ perché non avrebbe molto senso cambiare i permessi di un link simbolico) e
 pertanto l'uso della funzione è analogo a quello delle altre funzioni che non
 hanno l'argomento \param{flags} (e non la tratteremo esplicitamente).
 
+% TODO: documentare l'introduzione di fchmodat4() se e quando ci sarà, vedi
+% https://lwn.net/Articles/792628/ 
+
 L'altro flag comune è \const{AT\_EMPTY\_PATH}, utilizzabile a partire dal
 kernel 2.6.39, che consente di usare per \param{dirfd} un file descriptor
 associato ad un file qualunque e non necessariamente ad una directory; in
index 7045a66cc0e1e429b4a1f9259a9694a7e933ffb7..3e9b488f61e38bbd0fd5f6e2dc4cc5fb85b59b82 100644 (file)
@@ -17,4 +17,11 @@ siginfo_t {
     void *   si_addr;    /* Memory location which caused fault */
     long     si_band;    /* Band event (was int before glibc 2.3.2) */
     int      si_fd;      /* File descriptor */
-}
+    short    si_addr_lsb;/* Least significant bit of address (since Linux 2.6.32) */
+    void    *si_lower;   /* Lower bound when address violation occurred (since Linux 3.19) */
+    void    *si_upper;   /* Upper bound when address violation occurred (since Linux 3.19) */
+    int      si_pkey;    /* Protection key on PTE that caused fault (since Linux 4.6) */
+    void    *si_call_addr; /* Address of system call instruction (since Linux 3.5) */
+    int      si_syscall; /* Number of attempted system call (since Linux 3.5) */
+    unsigned int si_arch;/* Architecture of attempted system call  (since Linux 3.5) */
+ }
index fe057f85ad8a77c3051b7fd536cd37af8e4d15cb..ebef64305d1095571f98325413d9f99c4130de8f 100644 (file)
@@ -1498,7 +1498,8 @@ alcune opzioni di controllo attivabili via \func{sysctl} o il filesystem
 
 % TODO documentare la syscall getrandom, introdotta con il kernel 3.17, vedi
 % http://lwn.net/Articles/606141/, ed introdotta con le glibc solo con la
-% versione 2.25, vedi https://lwn.net/Articles/711013/
+% versione 2.25 con getentropy, vedi https://lwn.net/Articles/711013/ ed i
+% problemi successivi vedi https://lwn.net/Articles/800509/
 
 %\subsection{La gestione delle chiavi crittografiche}
 %\label{sec:keyctl_management}
@@ -1891,6 +1892,9 @@ Introdotta a partire dal kernel 2.4.21, solo su PowerPC.
 % TODO documentare PR_SPEC_DISABLE_NOEXEC in 5.1, vedi
 % https://lwn.net/Articles/782511/ 
 
+% TODO documentare  PR_SET_IO_FLUSHER in 5.6, vedi
+% https://lwn.net/Articles/811230/
+
 \label{sec:prctl_operation}
 \end{basedescript}
 
@@ -2223,7 +2227,9 @@ degli altri gruppi, che costituisce poi quello che viene chiamato un
 
 
 % TODO: trattare userfaultfd, introdotta con il 4.23, vedi
-% http://man7.org/linux/man-pages/man2/userfaultfd.2.html 
+% http://man7.org/linux/man-pages/man2/userfaultfd.2.html,
+% https://lwn.net/Articles/787308/, https://git.kernel.org/linus/57e5d4f278b9
+
 
 % TODO: trattare process_vm_readv/process_vm_writev introdotte con il kernel
 % 3.2, vedi http://man7.org/linux/man-pages/man2/process_vm_readv.2.html e i
index 174ca0b0eeb19106878fec34ff6af1f3ef29df3c..2ec17612edf3fb27c13db82e0df8957c3d3169b8 100644 (file)
@@ -2126,6 +2126,11 @@ tab.~\ref{tab:sig_sa_flag}.
                             call} quando vengono interrotte dal suddetto
                             segnale, riproduce cioè il comportamento standard
                             di BSD.\\ 
+    \constd{SA\_RESTORER} & Ad uso delle implementazioni delle liberie del C,
+                            non deve essere usato nelle applicazioni, serve ad
+                            indicare che il campo \var{sa\_restorer} contiene
+                            l'indirizzo di un cosiddetto \textit{signal
+                            trampoline}.\footnotemark \\ 
     \constd{SA\_SIGINFO}  & Deve essere specificato quando si vuole usare un
                             gestore in forma estesa usando
                             \var{sa\_sigaction} al posto di
@@ -2136,6 +2141,13 @@ tab.~\ref{tab:sig_sa_flag}.
   \label{tab:sig_sa_flag}
 \end{table}
 
+\footnotetext{il \itindex{signal~trampoline} \textit{signal trampoline} è il
+  codice usato per tornare da un gestore di segnali, che originariamente
+  veniva inserito nello \textit{stack}, ma i kernel recenti come misura di
+  sicurezza impediscono l'esecuzione di codice dallo stack, per cui questo
+  codice viene spostato altrove (ad esempio nella libreria del C) ed il suo
+  indirizzo viene indicato al kernel nel campo \var{sa\_restorer}.}
+
 Come si può notare in fig.~\ref{fig:sig_sigaction} \func{sigaction} permette
 di utilizzare due forme diverse di gestore,\footnote{la possibilità è prevista
   dallo standard POSIX.1b, ed è stata aggiunta nei kernel della serie 2.1.x
@@ -3834,10 +3846,10 @@ tipo \type{sigjmp\_buf}, è assolutamente identica a \func{longjmp}.
 \label{sec:sig_pid_fd}
 
 
-% TODO: trattare (qui?) pidfd_send_signal() introdotta con il kernel 5.1 vedi
+% TODO: trattare (qui? oppure sopra in "Ulteriori funzioni di gestione?)
+% pidfd_send_signal() introdotta con il kernel 5.1 vedi
 % https://lwn.net/Articles/784831/, https://lwn.net/Articles/773459/ e
-% https://lwn.net/Articles/801319/ 
-% oppure sopra in "Ulteriori funzioni di gestione"
+% https://lwn.net/Articles/801319/
 
 % TODO: Nuova subsection sui pidfd, e le funzioni correlate, in particolare:
 % trattare pidfd_send_signal, aggiunta con il kernel 5.1 (vedi
@@ -3847,7 +3859,7 @@ tipo \type{sigjmp\_buf}, è assolutamente identica a \func{longjmp}.
 % trattare pure pidfd_open() (vedi https://lwn.net/Articles/789023/) per
 % ottere un pid fd pollabile aggiunta con il kernel 5.3
 % man pidfd_send_signal su le versioni più recenti della man pages
-
+% trattare pidfd_getfd aggiunta con il kernel 5.6