Provided by: manpages-fr-dev_4.13-4_all bug

NOM

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

SYNOPSIS

       #include <asm/prctl.h>
       #include <sys/prctl.h>

       int arch_prctl(int code, unsigned long addr);
       int arch_prctl(int code, unsigned long *addr);

DESCRIPTION

       La  fonction arch_prctl() définit l'état spécifique à l'architecture pour le thread ou le processus. code
       sélectionne une sous‐fonction 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 code n'est pas une sous‐commande autorisée.

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

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

CONFORMITÉ

       arch_prctl() est une extension Linux/x86-64 et ne doit pas être employée dans un programme portable.

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.

       Il n'y a pas de prototype pour arch_prctl() dans la glibc 2.7. Vous devez  le  déclarer  vous‐même.  Cela
       sera peut‐être corrigé dans les futures versions de la glibc.

       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

COLOPHON

       Cette page fait partie de la publication 5.10 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-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.

Linux                                             11 avril 2020                                    ARCH_PRCTL(2)