zion - arch_prctl
Nom
arch_prctl - Fixe l'état spécifique à l'architecture.
Résumé
#include <asm/prctl.h> #include <sys/prctl.h> int arch_prctl(int code, unsigned long adr)
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 .
Les sous-fonctions pour les architectures x86-64 sont :
ARCH_SET_FS
Remplit la base 64-bits pour le registre FS avec adr . |
ARCH_GET_FS
Renvoie la base 64-bits pour le registre FS du thread en cours dans la variable unsigned long pointée par le paramètre adr . |
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 le paramètre adr . |
Notes
arch_prctl n'est seulement supporté sur Linux/x86-64 pour les programmes 64-bits. La base 64-bits change lorsqu'un nouveau selecteur de segment 32-bits est chargé. ARCH_SET_GS est inactif dans certains noyaux. Les changements de contextes 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. 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.2. Vous devez le déclarer vous-même. Ceci sera corrigé dans les futures versions de la GlibC. FS peut être déjà utilisé par la bibliothèque de multi-threading.
Erreurs
EINVAL code
n'est pas une sous-commande valide. |
EPERM adr
pointe en dehors de l'espace d'adressage du processus. |
EFAULT adr
pointe vers une adresse non affectée ou est en dehors de l'espace d'adressage. |
Auteur
Page de manuel écrite par Andi Kleen.
Conformité
arch_prctl est une extension Linux/x86-64 et ne doit pas être employée dans un programme portable.
Voir aussi
mmap (2), modify_ldt (2), prctl (2), set_thread_area (2) Manuel du programmeur AMD X86-64
Traduction
Christophe Blaess, 1996-2003.
Poster un commentaire