Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

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

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 code, unsigned long addr);
       int syscall(SYS_arch_prctl, int code, 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.  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.

       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.

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.

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

       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⟩.