Linux |
CentOS 5.3 |
|
arch_prctl(2) |
arch_prctl − Fixe l’état spécifique à l’architecture. |
#include <asm/prctl.h> #include <sys/prctl.h> int arch_prctl(int code, unsigned long adr) |
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. |
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.3.5. 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. |
EFAULT |
adr 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 |
adr pointe en dehors de l’espace d’adressage du processus. |
Page de manuel écrite par Andi Kleen. |
arch_prctl() est une extension Linux/x86-64 et ne doit pas être employée dans un programme conçu pour être portable. |
mmap(2), modify_ldt(2), prctl(2), set_thread_area(2) Manuel du programmeur AMD X86-64 |
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 14 août 2006. 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. |
arch_prctl(2) |