Provided by: manpages-fr-dev_4.27.0-1_all bug

NOM

       arch_prctl - Définir l'état spécifique à l'architecture d’un processus

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <asm/prctl.h>           /* Définition des constantes
                                                      ARCH_* */
       #include <sys/syscall.h>         /* Définition des constantes
                                                      SYS_* */
       #include <unistd.h>

       int syscall(SYS_arch_prctl, int op, unsigned long addr);
       int syscall(SYS_arch_prctl, int op, unsigned long *addr);

       Note  :  la  glibc  ne  fournit  pas  d'enveloppe  autour  de  arch_prctl(), nécessitant l'utilisation de
       syscall(2).

DESCRIPTION

       La fonction arch_prctl() définit l'état spécifique à l'architecture pour le thread ou  le  processus.  op
       sélectionne  une opération et lui passe l'argument addr ; addr est interprété comme un unsigned long pour
       les opérations « set », ou comme un unsigned long *, pour les opérations « get ».

       Les sous‐fonctions pour les architectures x86 et x86-64 sont :

       ARCH_SET_CPUID (depuis Linux 4.12)
              Activer (addr != 0) ou désactiver (addr  ==  0)  l'instruction  cpuid  pour  le  thread  appelant.
              L'instruction  est  activée par défaut. Si elle est désactivée, l'exécution de l'instruction cpuid
              générera un signal SIGSEGV. Cette fonctionnalité peut être utilisée pour émuler des  résultats  de
              cpuid  qui  diffèrent de ceux obtenus normalement sur le matériel sous-jacent (par exemple dans un
              environnement de paravirtualisation).

              Le paramètre  ARCH_SET_CPUID  est  préservé  pendant  un  fork(2)  et  un  clone(2)  mais  il  est
              réinitialisé à l'état par défaut (donc cpuid activé) en cas de execve(2).

       ARCH_GET_CPUID (depuis Linux 4.12)
              Renvoyer  la  position  de l'attribut manipulé par ARCH_SET_CPUID sous forme d'un appel système (1
              pour activé, 0 pour désactivé). addr est ignoré.

       Les sous‐fonctions pour l'architecture x86-64 sont :

       ARCH_SET_FS
              Remplir la base 64 bits pour le registre FS avec addr.

       ARCH_GET_FS
              Renvoyer la valeur dans la base 64 bits pour le registre FS du thread appelant  dans  la  variable
              unsigned long pointée par addr.

       ARCH_SET_GS
              Remplir la base 64 bits pour le registre GS avec addr.

       ARCH_GET_GS
              Renvoyer  la  valeur  dans la base 64 bits pour le registre GS du thread appelant dans la variable
              unsigned long pointée par addr.

VALEUR RENVOYÉE

       S'il réussit, arch_prctl() renvoie 0. En cas d'erreur, il renvoie -1 et  remplit  errno  avec  la  valeur
       d'erreur.

ERREURS

       EFAULT addr pointe vers une adresse non affectée ou est en dehors de l'espace d'adressage.

       EINVAL op n'est pas une opération autorisée.

       ENODEV ARCH_SET_CPUID a été sollicité mais le matériel ne prend pas en charge les erreurs CPUID.

       EPERM  addr pointe en dehors de l'espace d'adressage du processus.

STANDARDS

       Linux/x86-64.

NOTES

       arch_prctl() n'est pris en charge sur Linux/x86-64 que pour les programmes 64 bits.

       La base 64 bits change lorsqu'un nouveau sélecteur de segment 32 bits est chargé.

       ARCH_SET_GS est inactif dans certains noyaux.

       Les changements de contexte pour les bases 64 bits sont assez coûteux. Pour les optimiser, si une adresse
       de  base  32  bits  TLS  est utilisée, arch_prctl() peut utiliser une entrée TLS réelle comme si on avait
       appelé set_thread_area(2) plutôt que de manipuler directement le registre  de  la  base  du  segment.  La
       mémoire  dans  les  premiers  2 Go  d'adressage  peut  être  allouée en utilisant mmap(2) avec l'attribut
       MAP_32BIT.

       Du fait de l'optimisation précitée, l'utilisation de arch_prctl() et de set_thread_area(2) dans  le  même
       thread est dangereuse car elles peuvent écraser les entrées TLS entre elles.

       FS  peut  être  déjà  utilisé  par la bibliothèque de threading. Les programmes qui utilisent directement
       ARCH_SET_FS vont très probablement planter.

VOIR AUSSI

       mmap(2), modify_ldt(2), prctl(2), set_thread_area(2)

       Manuel du programmeur AMD X86-64

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-Philippe MENGUAL <jpmengual@debian.org>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General Public License
       version 3 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.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                      arch_prctl(2)