.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2003 Andi Kleen .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ARCH_PRCTL 2 "11 avril 2020" Linux "Manuel du programmeur Linux" .SH NOM arch_prctl \- Définir l'état spécifique à l'architecture d’un processus .SH SYNOPSIS .nf \fB#include \fP \fB#include \fP .PP \fBint arch_prctl(int \fP\fIcode\fP\fB, unsigned long \fP\fIaddr\fP\fB);\fP \fBint arch_prctl(int \fP\fIcode\fP\fB, unsigned long *\fP\fIaddr\fP\fB);\fP .fi .SH DESCRIPTION La fonction \fBarch_prctl\fP() définit l'état spécifique à l'architecture pour le thread ou le processus. \fIcode\fP sélectionne une sous\(hyfonction et lui passe l'argument \fIaddr\fP\ ; \fIaddr\fP est interprété comme un \fIunsigned long\fP pour les opérations «\ set\ », ou comme un \fIunsigned long\ *\fP, pour les opérations «\ get\ ». .PP Les sous\(hyfonctions pour les architectures x86 et x86\-64 sont\ : .TP \fBARCH_SET_CPUID\fP (depuis Linux 4.12) .\" commit e9ea1e7f53b852147cbd568b0568c7ad97ec21a3 Activer (\fIaddr != 0\fP) ou désactiver (\fIaddr == 0\fP) l'instruction \fIcpuid\fP pour le thread appelant. L'instruction est activée par défaut. Si elle est désactivée, l'exécution de l'instruction \fIcpuid\fP générera un signal \fBSIGSEGV\fP. Cette fonctionnalité peut être utilisée pour émuler des résultats de \fIcpuid\fP qui diffèrent de ceux obtenus normalement sur le matériel sous\-jacent (par exemple dans un environnement de paravirtualisation). .IP Le paramètre \fBARCH_SET_CPUID\fP est préservé pendant un \fBfork\fP(2) et un \fBclone\fP(2) mais il est réinitialisé à l'état par défaut (donc \fIcpuid\fP activé) en cas de \fBexecve\fP(2). .TP \fBARCH_GET_CPUID\fP (depuis Linux 4.12) Renvoyer la position de l'attribut manipulé par \fBARCH_SET_CPUID\fP sous forme d'un appel système (\fB1\fP pour activé, \fB0\fP pour désactivé). \fIaddr\fP est ignoré. .TP Les sous\(hyfonctions pour l'architecture x86\-64 sont\ : .TP \fBARCH_SET_FS\fP Remplir la base 64\ bits pour le registre \fIFS\fP avec \fIaddr\fP. .TP \fBARCH_GET_FS\fP Renvoyer la valeur dans la base 64\ bits pour le registre \fIFS\fP du thread appelant dans la variable \fIunsigned\ long\fP pointée par \fIaddr\fP. .TP \fBARCH_SET_GS\fP Remplir la base 64\ bits pour le registre \fIGS\fP avec \fIaddr\fP. .TP \fBARCH_GET_GS\fP Renvoyer la valeur dans la base 64\ bits pour le registre \fIGS\fP du thread appelant dans la variable \fIunsigned long\fP pointée par \fIaddr\fP. .SH "VALEUR RENVOYÉE" S'il réussit, \fBarch_prctl\fP() renvoie \fB0\fP. En cas d'erreur, il renvoie \fB\-1\fP et remplit \fIerrno\fP avec la valeur d'erreur. .SH ERREURS .TP \fBEFAULT\fP \fIaddr\fP pointe vers une adresse non affectée ou est en dehors de l'espace d'adressage. .TP \fBEINVAL\fP \fIcode\fP n'est pas une sous\(hycommande autorisée. .TP \fBEPERM\fP \fIaddr\fP pointe en dehors de l'espace d'adressage du processus. .TP \fBENODEV\fP .\" .SH AUTHOR .\" Man page written by Andi Kleen. \fBARCH_SET_CPUID\fP a été sollicité mais le matériel ne prend pas en charge les erreurs CPUID. .SH CONFORMITÉ \fBarch_prctl\fP() est une extension Linux/x86\-64 et ne doit pas être employée dans un programme portable. .SH NOTES \fBarch_prctl\fP() n'est pris en charge sur Linux/x86\-64 que pour les programmes 64\ bits. .PP La base 64\ bits change lorsqu'un nouveau sélecteur de segment 32\ bits est chargé. .PP \fBARCH_SET_GS\fP est inactif dans certains noyaux. .PP 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, \fBarch_prctl\fP() peut utiliser une entrée TLS réelle comme si on avait appelé \fBset_thread_area\fP(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 \fBmmap\fP(2) avec l'attribut \fBMAP_32BIT\fP. .PP Du fait de l'optimisation précitée, l'utilisation de \fBarch_prctl\fP() et de \fBset_thread_area\fP(2) dans le même thread est dangereuse car elles peuvent écraser les entrées TLS entre elles. .PP Il n'y a pas de prototype pour \fBarch_prctl\fP() dans la glibc\ 2.7. Vous devez le déclarer vous\(hymême. Cela sera peut\(hyêtre corrigé dans les futures versions de la glibc. .PP \fIFS\fP peut être déjà utilisé par la bibliothèque de threading. Les programmes qui utilisent directement \fBARCH_SET_FS\fP vont très probablement planter. .SH "VOIR AUSSI" \fBmmap\fP(2), \fBmodify_ldt\fP(2), \fBprctl\fP(2), \fBset_thread_area\fP(2) .PP Manuel du programmeur AMD X86\-64 .SH COLOPHON Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP 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/. .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et Jean-Philippe MENGUAL . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .