Chiarimento prctl per PR_SET_CHILD_SUBREAPER e PR_GET_CHILD_SUBREAPER
[gapil.git] / prochand.tex
index 341547aa1b4f4b13a23dacceb1acc18c51d614ed..2fed790e984b787d143812570d1e7b25c24e6a28 100644 (file)
@@ -3773,10 +3773,10 @@ Introdotta a partire dal kernel 2.4.21, solo su PowerPC.
     vendere la capacità di calcolo della proprio macchina ad un qualche
     servizio di calcolo distribuito senza comprometterne la sicurezza
     eseguendo codice non sotto il proprio controllo.} in genere i dati vengono
-  letti o scritti grazie ad un socket o una pipe, e per evitare problemi di
-  sicurezza non sono possibili altre operazioni se non quelle citate.
-  Introdotta a partire dal kernel 2.6.23, disponibile solo se si è abilitato
-  il supporto nel kernel con \texttt{CONFIG\_SECCOMP}.
+  letti o scritti grazie ad un socket o una \textit{pipe}, e per evitare
+  problemi di sicurezza non sono possibili altre operazioni se non quelle
+  citate.  Introdotta a partire dal kernel 2.6.23, disponibile solo se si è
+  abilitato il supporto nel kernel con \texttt{CONFIG\_SECCOMP}.
 
 % TODO a partire dal kernel 3.5 è stato introdotto la possibilità di usare un
 % terzo argomento se il secondo è SECCOMP_MODE_FILTER, vedi
@@ -3899,20 +3899,36 @@ Introdotta a partire dal kernel 2.4.21, solo su PowerPC.
   memoria. Tutti gli argomenti non utilizzati (al momento tutti) devono essere
   nulli pena la ricezione di un errore di \errval{EINVAL}. Introdotta a
   partire dal kernel 2.6.32.
-% TODO: verificare questa parte
-\item[\const{PR\_SET\_CHILD\_SUBREAPER}] Imposta il processo indicato con il
-  \ids{PID} specificato da \param{arg2} come nuovo ``\textsl{genitore
-    adottivo}'' per tutti i processi discendenti del chiamante che
-  diventeranno orfani, sostituendo in questo ruolo \cmd{init} (si ricordi
-  quanto illustrato in sez.~\ref{sec:proc_termination}). Introdotta a partire
-  dal kernel 3.4.
-\item[\const{PR\_GET\_CHILD\_SUBREAPER}] Ottiene il \ids{PID} del processo a
-  cui vengono assegnati come figli gli orfani del processo
-  corrente. Introdotta a partire dal kernel 3.4.
-  % TODO documentare PR_SET_SECCOMP introdotto a partire dal kernel 3.5. Vedi:
-  % * Documentation/prctl/seccomp_filter.txt
-  % * http://lwn.net/Articles/475043/
-
+\itindbeg{child reaper}
+\item[\const{PR\_SET\_CHILD\_SUBREAPER}] Se \param{arg2} è diverso da zero
+  imposta l'attributo di \textit{child reaper} per il processo, se nullo lo
+  cancella. Lo stato di \textit{child reaper} è una funzionalità, introdotta
+  con il kernel 3.4, che consente di far svolgere al processo che ha questo
+  attributo il ruolo di ``\textsl{genitore adottivo}'' per tutti i processi
+  suoi ``\textsl{discendenti}'' che diventano orfani, in questo modo il
+  processo potrà ricevere gli stati di terminazione alla loro uscita,
+  sostituendo in questo ruolo \cmd{init} (si ricordi quanto illustrato in
+  sez.~\ref{sec:proc_termination}). Il meccanismo è stato introdotto ad uso
+  dei programmi di gestione dei servizi, per consentire loro di ricevere gli
+  stati di terminazione di tutti i processi che lanciano, anche se questi
+  eseguono una doppia \func{fork}; nel comportamento ordinario infatti questi
+  verrebbero adottati da \cmd{init} ed il programma che li ha lanciati non
+  sarebbe più in grado di riceverne lo stato di terminazione. Se un processo
+  con lo stato di \textit{child reaper} termina prima dei suoi discendenti,
+  svolgerà questo ruolo il più prossimo antenato ad avere lo stato di
+  \textit{child reaper}, 
+\item[\const{PR\_GET\_CHILD\_SUBREAPER}] Ottiene l'impostazione relativa allo
+  lo stato di \textit{child reaper} del processo chiamante, salvata come
+  \textit{value result} all'indirizzo puntato da \param{arg2} (da indicare
+  come di tipo \code{int *}). Il valore viene letto come valore logico, se
+  diverso da 0 lo stato di \textit{child reaper} è attivo altrimenti è
+  disattivo. Introdotta a partire dal kernel 3.4.
+\itindend{child reaper}
+
+
+% TODO documentare PR_SET_SECCOMP introdotto a partire dal kernel 3.5. Vedi:
+% * Documentation/prctl/seccomp_filter.txt
+% * http://lwn.net/Articles/475043/
 
 % TODO documentare PR_MPX_INIT e PR_MPX_RELEASE, vedi
 % http://lwn.net/Articles/582712/ 
@@ -4183,7 +4199,11 @@ Da fare
 %TODO trattare init_module e finit_module (quest'ultima introdotta con il
 %kernel 3.8)
 
+%%%% Altre cose di cui non è chiara la collocazione:
 
+%TODO trattare membarrier, introdotta con il kernel 4.3
+% vedi http://lwn.net/Articles/369567/ http://lwn.net/Articles/369640/
+% http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=5b25b13ab08f616efd566347d809b4ece54570d1 
 
 \section{Problematiche di programmazione multitasking}
 \label{sec:proc_multi_prog}