Merge branch 'master' of ssh://roach.truelite.it/srv/git/gapil
authorSimone Piccardi <piccardi@gnulinux.it>
Thu, 15 Oct 2020 08:48:23 +0000 (10:48 +0200)
committerSimone Piccardi <piccardi@gnulinux.it>
Thu, 15 Oct 2020 08:48:23 +0000 (10:48 +0200)
1  2 
fileio.tex
procadv.tex
signal.tex

diff --combined fileio.tex
index 86577205add285e82ca1ecb8a87c51ced96de96b,3bd9db3a35f5f7178ccaad31f171849d57bd0ae0..f6305620b9426ac36594e44fc7ac552760a7def3
@@@ -1847,9 -1847,6 +1847,9 @@@ riferimento ad una directory, tranne i
  \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
@@@ -1957,7 -1954,9 +1957,9 @@@ Si tenga presente che non tutte le funz
  aggiuntivo sono \textit{system call}, ad esempio \func{faccessat} e
  \func{fchmodat} sono realizzate con dei \textit{wrapper} nella \acr{glibc} per
  aderenza allo standard POSIX.1-2008, dato che la \textit{system call}
- sottostante non prevede l'argomento \param{flags}. 
+ sottostante non prevede l'argomento \param{flags}.
+ % TODO: aggiornare per via di faccessat2 aggiunta con il kernel 5.8
  
  In tab.~\ref{tab:at-functions_constant_values} si sono elencati i valori
  utilizzabili per i flag (tranne quelli specifici di \func{statx} su cui
@@@ -1972,9 -1971,6 +1974,9 @@@ perché non avrebbe molto senso cambiar
  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
diff --combined procadv.tex
index 006a844b7084f046a41bbb95e46fa76311ba3b8f,fe057f85ad8a77c3051b7fd536cd37af8e4d15cb..ebef64305d1095571f98325413d9f99c4130de8f
@@@ -572,6 -572,9 +572,9 @@@ opportuno dettagliare maggiormente
  \label{tab:proc_capabilities}
  \end{table}
  
+ % TODO: verificare ed aggiungere le nuove capacità CAP_BPF, CAP_PERFMON, vedi
+ % https://lwn.net/Articles/822362/ 
  \constbeg{CAP\_SETPCAP}
  
  Prima di dettagliare il significato della capacità più generiche, conviene
@@@ -1495,8 -1498,7 +1498,8 @@@ alcune opzioni di controllo attivabili 
  
  % 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}
@@@ -1889,9 -1891,6 +1892,9 @@@ Introdotta a partire dal kernel 2.4.21
  % 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}
  
@@@ -2224,9 -2223,7 +2227,9 @@@ degli altri gruppi, che costituisce po
  
  
  % 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
diff --combined signal.tex
index 0cdf0abc457e53ebdd3d0e8dace2af63e89ef61e,8159d3f0a3904e8c8ebe10fbab7cf39efc292f92..2ec17612edf3fb27c13db82e0df8957c3d3169b8
@@@ -2049,13 -2049,6 +2049,6 @@@ sia \param{act} che \param{oldact} son
  utilizzata per verificare che il segnale indicato sia valido per la
  piattaforma che si sta usando (se non lo è darà errore).
  
- Entrambi i puntatori fanno riferimento alla struttura \struct{sigaction},
- tramite la quale si specificano tutte le caratteristiche dell'azione associata
- ad un segnale.  Anch'essa è descritta dallo standard POSIX.1 ed in Linux è
- definita secondo quanto riportato in fig.~\ref{fig:sig_sigaction}. Il campo
- \var{sa\_restorer}, non previsto dallo standard, è obsoleto e non deve essere
- più usato.
  \begin{figure}[!htb]
    \footnotesize \centering
    \begin{minipage}[c]{0.8\textwidth}
    \label{fig:sig_sigaction}
  \end{figure}
  
+ Entrambi i puntatori fanno riferimento alla struttura \struct{sigaction},
+ tramite la quale si specificano tutte le caratteristiche dell'azione associata
+ ad un segnale.  Anch'essa è descritta dallo standard POSIX.1 ed in Linux è
+ definita secondo quanto riportato in fig.~\ref{fig:sig_sigaction}. Il campo
+ \var{sa\_restorer}, non previsto dallo standard, è obsoleto e non deve essere
+ più usato.
  Il campo \var{sa\_mask} serve ad indicare l'insieme dei segnali che devono
  essere bloccati durante l'esecuzione del gestore, ad essi viene comunque
  sempre aggiunto il segnale che ne ha causato la chiamata, a meno che non si
- sia specificato con \var{sa\_flag} un comportamento diverso. Quando il
- gestore ritorna comunque la maschera dei segnali bloccati (vedi
- sez.~\ref{sec:sig_sigmask}) viene ripristinata al valore precedente
- l'invocazione.
+ sia specificato con \var{sa\_flag} un comportamento diverso. Quando il gestore
+ ritorna la maschera dei segnali bloccati (vedi sez.~\ref{sec:sig_sigmask})
+ viene comunque ripristinata al valore precedente l'invocazione.
  
  L'uso di questo campo permette ad esempio di risolvere il problema residuo
  dell'implementazione di \code{sleep} mostrata in
@@@ -2127,6 -2126,11 +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
    \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
@@@ -2182,15 -2193,6 +2193,6 @@@ viene sempre espresso come una costante
    valori possibili si trovano in \file{bits/siginfo.h}.} ed i valori possibili
  in questo caso sono riportati in tab.~\ref{tab:sig_si_code_generic}.
  
- Nel caso di alcuni segnali però il valore di \var{si\_code} viene usato per
- fornire una informazione specifica relativa alle motivazioni della ricezione
- dello stesso; ad esempio i vari segnali di errore (\signal{SIGILL},
- \signal{SIGFPE}, \signal{SIGSEGV} e \signal{SIGBUS}) lo usano per fornire
- maggiori dettagli riguardo l'errore, come il tipo di errore aritmetico, di
- istruzione illecita o di violazione di memoria; mentre alcuni segnali di
- controllo (\signal{SIGCHLD}, \signal{SIGTRAP} e \signal{SIGPOLL}) forniscono
- altre informazioni specifiche.
  \begin{table}[!htb]
    \footnotesize
    \centering
    \label{tab:sig_si_code_generic}
  \end{table}
  
+ Nel caso di alcuni segnali però il valore di \var{si\_code} viene usato per
+ fornire una informazione specifica relativa alle motivazioni della ricezione
+ dello stesso; ad esempio i vari segnali di errore (\signal{SIGILL},
+ \signal{SIGFPE}, \signal{SIGSEGV} e \signal{SIGBUS}) lo usano per fornire
+ maggiori dettagli riguardo l'errore, come il tipo di errore aritmetico, di
+ istruzione illecita o di violazione di memoria; mentre alcuni segnali di
+ controllo (\signal{SIGCHLD}, \signal{SIGTRAP} e \signal{SIGPOLL}) forniscono
+ altre informazioni specifiche.
  
  In questo caso il valore del campo \var{si\_code} deve essere verificato nei
  confronti delle diverse costanti previste per ciascuno di detti segnali; dato
@@@ -3835,10 -3846,10 +3846,10 @@@ tipo \type{sigjmp\_buf}, è assolutamen
  \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
  % 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