Provided by: manpages-fr_4.15.0-9_all bug

NOM

       nptl — Bibliothèque native des threads POSIX

DESCRIPTION

       NPTL   (Native  POSIX  Threads  Library  — Bibliothèque  native  des  threads  POSIX)  est
       l’implémentation de la bibliothèque GNU C de threads  POSIX  utilisée  dans  les  systèmes
       Linux modernes.

   NPTL et signaux
       NPTL  représente  l’utilisation  interne  des deux premiers signaux temps réel (numéros de
       signal 32 et 33). Un de ces signaux est utilisé pour  gérer  l’annulation  de  threads  et
       d’horloges  POSIX  (consultez  timer_create(2)),  l’autre  est  utilisé  comme partie d’un
       mécanisme qui garantit que tous les threads d’un processus aient toujours les mêmes UID et
       GID  comme  demandé  par  POSIX.  Ces  signaux  ne  peuvent  pas  être  utilisés  dans les
       applications.

       Pour prévenir d’une utilisation accidentelle de ces signaux dans des applications, pouvant
       interférer  avec  le  fonctionnement de la mise en œuvre de NPTL, diverses fonctions de la
       bibliothèque glibc et enveloppes d’appel  système  essaient  de  cacher  ces  signaux  aux
       applications comme suit :

       –  SIGRTMIN est réglé à la valeur 34 (plutôt que 32) ;

       –  les  interfaces  sigwaitinfo(2), sigtimedwait(2) et sigwait(3) ignorent silencieusement
          les requêtes d’attente de  ces  deux  signaux  s’ils  sont  spécifiés  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)  échouent  avec
          l’erreur  EINVAL  (indiquant  un  numéro  de  signal  non autorisé) si ces signaux sont
          spécifiés ;

       –  sigfillset(3) n’inclut pas ces deux signaux  lorsqu’il  crée  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 à chaque thread. Cependant, POSIX  demande  que  tous  les  threads
       POSIX  d’un  processus  aient  les  même  identifiants.  Pour  satisfaire  cette exigence,
       l’implémentation de NPTL enveloppe tous les appels système qui modifient les  identifiants
       avec  des  fonctions qui, en plus d’invoquer l’appel système sous-jacent, organisent aussi
       la modification des identifiants de tous les autres threads du processus.

       La mise en œuvre de chacun de ces appels système implique l’utilisation d’un signal  temps
       réel  qui  est envoyé (en utilisant tgkill(2)) à 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 système à utiliser dans un tampon
       global. Un gestionnaire de signal dans  le  ou  les  threads  récepteurs  recherche  cette
       information, puis utilise le même appel système 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).

CONFORMITÉ

       Pour des précisions sur la conformité de NPTL avec la norme POSIX, consultez pthreads(7).

NOTES

       POSIX  indique que tout thread dans chaque processus ayant accès à la mémoire contenant un
       mutex de processus partagé (PTHREAD_PROCESS_SHARED) peut agir sur ce mutex. Cependant, sur
       les  systèmes  x86 64 bits, la définition 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 systèmes x86-64.

VOIR AUSSI

       credentials(7), pthreads(7), signal(7), standards(7)

COLOPHON

       Cette  page  fait partie de la publication 5.13 du projet man-pages Linux. Une description
       du projet et des instructions pour signaler des anomalies et la dernière version de  cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>  et  Jean-Paul  Guillonneau
       <guillonneau.jeanpaul@free.fr>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.