nptl(7) Miscellaneous Information Manual nptl(7)
NOM
nptl -- Bibliotheque native des threads POSIX
DESCRIPTION
NPTL (Native POSIX Threads Library -- Bibliotheque native des threads
POSIX) est l'implementation de la bibliotheque GNU C de threads POSIX
utilisee dans les systemes Linux modernes.
NPTL et signaux
NPTL represente l'utilisation interne des deux premiers signaux temps
reel (numeros de signal 32 et 33). Un de ces signaux est utilise pour
gerer l'annulation de threads et d'horloges POSIX (consultez
timer_create(2)), l'autre est utilise comme partie d'un mecanisme qui
garantit que tous les threads d'un processus aient toujours les memes
UID et GID comme demande par POSIX. Ces signaux ne peuvent pas etre
utilises dans les applications.
Pour prevenir d'une utilisation accidentelle de ces signaux dans des
applications, pouvant interferer avec le fonctionnement de la mise en
oeuvre de NPTL, diverses fonctions de la bibliotheque glibc et
enveloppes d'appel systeme essaient de cacher ces signaux aux
applications comme suit :
- SIGRTMIN est regle a la valeur 34 (plutot que 32) ;
- les interfaces sigwaitinfo(2), sigtimedwait(2) et sigwait(3)
ignorent silencieusement les requetes d'attente de ces deux signaux
s'ils sont specifies dans l'argument d'ensemble de signaux de ces
appels ;
- les interfaces sigprocmask(2) et pthread_sigmask(3) ignorent
silencieusement les essais de bloquer ces deux signaux ;
- les interfaces sigaction(2), pthread_kill(3) et pthread_sigqueue(3)
echouent avec l'erreur EINVAL (indiquant un numero de signal non
autorise) si ces signaux sont specifies ;
- sigfillset(3) n'inclut pas ces deux signaux lorsqu'il cree un
ensemble complet de signaux.
Modifications des identifiants de processus et NPTL
Au niveau du noyau Linux, les identifiants (ID utilisateur et ID
groupe) sont des attributs particuliers a chaque thread. Cependant,
POSIX demande que tous les threads POSIX d'un processus aient les meme
identifiants. Pour satisfaire cette exigence, l'implementation de NPTL
enveloppe tous les appels systeme qui modifient les identifiants avec
des fonctions qui, en plus d'invoquer l'appel systeme sous-jacent,
organisent aussi la modification des identifiants de tous les autres
threads du processus.
La mise en oeuvre de chacun de ces appels systeme implique
l'utilisation d'un signal temps reel qui est envoye (en utilisant
tgkill(2)) a chaque autre thread qui doit modifier ses identifiants.
Avant l'envoi de ces signaux, le thread qui modifie ses identifiants
stocke le ou les nouveaux identifiants et enregistre l'appel systeme a
utiliser dans un tampon global. Un gestionnaire de signal dans le ou
les threads recepteurs recherche cette information, puis utilise le
meme appel systeme pour modifier ses identifiants.
Des fonctions enveloppe utilisant cette technique sont fournies pour
setgid(2), setuid(2), setegid(2), seteuid(2), setregid(2), setreuid(2),
setresgid(2), setresuid(2) et setgroups(2).
STANDARDS
Pour des precisions sur la conformite de NPTL avec la norme POSIX,
consultez pthreads(7).
NOTES
POSIX indique que tout thread dans chaque processus ayant acces a la
memoire contenant un mutex de processus partage
(PTHREAD_PROCESS_SHARED) peut agir sur ce mutex. Cependant, sur les
systemes x86 64 bits, la definition du mutex pour x86-64 est
incompatible avec celle pour i386, signifiant que les binaires 32 et
64 bits ne peuvent pas partager les mutex sur les systemes x86-64.
VOIR AUSSI
credentials(7), pthreads(7), signal(7), standards(7)
TRADUCTION
La traduction francaise de cette page de manuel a ete creee par
Christophe Blaess , Stephan Rafin
, Thierry Vignaud ,
Francois Micaux, Alain Portal , Jean-Philippe
Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas
Huriaux , Nicolas Francois
, Florentin Duneau
, Simon Paillard , Denis Barbier , David Prevot
et Jean-Paul Guillonneau
Cette traduction est une documentation libre ; veuillez vous reporter a
la GNU General Public License version 3
concernant les conditions
de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE.
Si vous decouvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message a .
Pages du manuel de Linux 6.9.1 2 mai 2024 nptl(7)