Aggiornamento note di copyright
[gapil.git] / prochand.tex
index c4f568faddae210b329defa4d5e3067fe2ed060a..5b063ee8d31c0bc7f63353ff8be0980198a31d7f 100644 (file)
@@ -1,6 +1,6 @@
 %% prochand.tex
 %%
-%% Copyright (C) 2000-2012 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2013 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",
@@ -3773,6 +3773,11 @@ Introdotta a partire dal kernel 2.4.21, solo su PowerPC.
   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
+% Documentation/prctl/seccomp_filter.txt 
+
+
 \item[\const{PR\_GET\_SECCOMP}] Ottiene come valore di ritorno della funzione
   lo stato corrente del \textit{secure computing mode}, al momento attuale la
   funzione è totalmente inutile in quanto l'unico valore ottenibile è 0, dato
@@ -3897,7 +3902,8 @@ Introdotta a partire dal kernel 2.4.21, solo su PowerPC.
   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
+  % * Documentation/prctl/seccomp_filter.txt
+  % * http://lwn.net/Articles/475043/
 
 \label{sec:prctl_operation}
 \end{basedescript}
@@ -3974,13 +3980,13 @@ Dato che tutto ciò è necessario solo per i \textit{thread} che condividono la
 memoria, la \textit{system call}, a differenza della funzione di libreria che
 vedremo a breve, consente anche di passare per \param{child\_stack} il valore
 \val{NULL}, che non imposta un nuovo \textit{stack}. Se infatti si crea un
-processo, questo ottiene un suo nuovo spazio degli indirizzi,\footnote{è
-  sottinteso cioè che non si stia usando il flag \const{CLONE\_VM} che vedremo
-  a breve.} ed in questo caso si applica la semantica del
-\itindex{copy~on~write} \textit{copy on write} illustrata in
-sez.~\ref{sec:proc_fork}, per cui le pagine dello \textit{stack} verranno
-automaticamente copiate come le altre e il nuovo processo avrà un suo
-\textit{stack} totalmente indipendente da quello del padre.
+processo, questo ottiene un suo nuovo spazio degli indirizzi (è sottinteso
+cioè che non si stia usando il flag \const{CLONE\_VM} che vedremo a breve) ed
+in questo caso si applica la semantica del \itindex{copy~on~write}
+\textit{copy on write} illustrata in sez.~\ref{sec:proc_fork}, per cui le
+pagine dello \textit{stack} verranno automaticamente copiate come le altre e
+il nuovo processo avrà un suo \textit{stack} totalmente indipendente da quello
+del padre.
 
 Dato che l'uso principale della nuova \textit{system call} è quello relativo
 alla creazione dei \textit{thread}, la \acr{glibc} definisce una funzione di
@@ -4040,7 +4046,7 @@ utilizzati soltanto se si sono specificati rispettivamente i flag
 La funzione ritorna un l'identificatore del nuovo \textit{task}, denominato
 \texttt{Thread ID} (da qui in avanti \ids{TID}) il cui significato è analogo
 al \ids{PID} dei normali processi e che a questo corrisponde qualora si crei
-un processo.
+un processo ordinario e non un \textit{thread}.
 
 Il comportamento di \func{clone}, che si riflette sulle caratteristiche del
 nuovo processo da essa creato, è controllato principalmente
@@ -4053,9 +4059,28 @@ elenco, che illustra quelle attualmente disponibili:\footnote{si fa
 \begin{basedescript}{\desclabelwidth{2.cm}\desclabelstyle{\nextlinelabel}}
 
 \item[\const{CLONE\_CHILD\_CLEARTID}] cancella il valore del \ids{TID}
-\item[\const{CLONE\_CHILD\_SETTID}]
-\item[\const{CLONE\_FILES}]
-\item[\const{CLONE\_FS}]
+  all'indirizzo dato dall'argomento \param{ctid}, eseguendo un riattivazione
+  del \textit{futex} (vedi sez.~\ref{sec:xxx_futex}) a quell'indirizzo; questo
+  flag viene utilizzato dalla librerie di gestione dei \textit{thread}.
+\item[\const{CLONE\_CHILD\_SETTID}] scrive il \ids{TID} del \textit{thread}
+  figlio all'indirizzo dato dall'argomento \param{ctid}. Questo flag viene
+  utilizzato dalla librerie di gestione dei \textit{thread}.
+\item[\const{CLONE\_FILES}] se impostato il nuovo processo condividerà con il
+  padre la \itindex{file~descriptor~table} \textit{file descriptor table}
+  (vedi sez.~\ref{sec:file_fd}), questo significa che ogni \textit{file
+    descriptor} aperto da un processo verrà visto anche dall'altro e che ogni
+  chiusura o cambiamento dei \textit{file descriptor flag} di un \textit{file
+    descriptor} verrà per entrambi.
+
+  Se non viene impostato il processo figlio eredita una copia della
+  \itindex{file~descriptor~table} \textit{file descriptor table} del padre e
+  vale la semantica classica della gestione dei \textit{file descriptor}, che
+  costituisce il comportamento ordinario di un sistema unix-like e che
+  illustreremo in dettaglio in sez.~\ref{sec:file_shared_access}.
+
+\item[\const{CLONE\_FS}] se questo flag viene impostato il nuovo processo
+  condividerà con il padre le informazioni 
+
 \item[\const{CLONE\_IO}]
 \item[\const{CLONE\_NEWIPC}]
 \item[\const{CLONE\_NEWNET}]
@@ -4077,15 +4102,21 @@ elenco, che illustra quelle attualmente disponibili:\footnote{si fa
 \end{basedescript}
 
 
-%TODO trattare unshare
+%TODO trattare unshare, vedi anche http://lwn.net/Articles/532748/
 
 
+%TODO trattare kcmp aggiunta con il kernel 3.5, vedi
+% https://lwn.net/Articles/478111/
+
 \subsection{La funzione \func{ptrace}}
 \label{sec:process_ptrace}
 
 Da fare
 
 % TODO: trattare PTRACE_SEIZE, aggiunta con il kernel 3.1
+% TODO: trattare PTRACE_O_EXITKILL, aggiunta con il kernel 3.8 (vedi
+% http://lwn.net/Articles/529060/) 
+
 
 
 \subsection{La gestione delle operazioni in virgola mobile}
@@ -4124,6 +4155,15 @@ Da fare
 % le pagine di manuale relative
 % vedere anche dove metterle...
 
+% \subsection{La gestione dei moduli}
+% \label{sec:kernel_modules}
+
+% da fare
+
+%TODO trattare init_module e finit_module (quest'ultima introdotta con il
+%kernel 3.8)
+
+
 
 \section{Problematiche di programmazione multitasking}
 \label{sec:proc_multi_prog}