ARCH_PRCTL
Section : Manuel du programmeur Linux (
2)
Mise à jour de la version anglaise : 26 décembre 2007
Index
Menu principal
NOM
arch_prctl - Fixer l'état spécifique à l'architecture
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()
fixe 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é soit comme un
unsigned long
pour les opérations de définitions (« set»), soit comme un
unsigned long *,
pour les opérations de lecture (« get»).
Les sous-fonctions pour l'architecture x86-64 sont :
- ARCH_SET_FS
-
Remplit la base 64 bits pour le registre
FS
avec
addr.
- ARCH_GET_FS
-
Renvoie la base 64 bits pour le registre
FS
du thread en cours dans la variable
unsigned long
pointée par
addr.
- ARCH_SET_GS
-
Remplit la base 64 bits pour le registre
GS
avec
addr.
- ARCH_GET_GS
-
Renvoie la base 64 bits pour le registre
GS
du thread en cours dans la variable
unsigned long
pointée par
addr.
VALEUR RENVOYÉE
S'il réussit,
arch_prctl()
renvoie 0 ; en cas d'erreur, -1 est renvoyée
errno
contient le code 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 valide.
- 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 conçu pour être 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.
Il peut être plus rapide de fixer une base 32 bits avec un sélecteur
de segment en fixant une LDT avec
modify_ldt(2)
ou en utilisant l'appel système
set_thread_area(2)
des noyaux 2.5 et suivants.
arch_prctl()
n'est utile que si vous désirez fixer des bases plus grandes que 4Go.
La mémoire dans les premiers 2 Go d'adressage peut être allouée
en utilisant
mmap(2)
avec
l'attribut.
MAP_32BIT.
Il n'y a pas de prototype pour
arch_prctl()
dans la glibc 2.7. Vous devez le déclarer vous-même.
Ceci sera peut-être corrigé dans les futures versions de la glibc.
FS
peut être déjà utilisé par la bibliothèque de multithreading.
VOIR AUSSI
mmap(2),
modify_ldt(2),
prctl(2),
set_thread_area(2)
Manuel du programmeur AMD X86-64
TRADUCTION
Ce document est une traduction réalisée par Christophe Blaess
<http://www.blaess.fr/christophe/> le 18 juillet 2003
et révisée le 17 juillet 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation
française de qualité. La version anglaise la plus à jour de ce document est
toujours consultable via la commande : « LANG=C man 2 arch_prctl ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- CONFORMITÉ
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 17 juillet 2008