getauxval(3) Récupérer une valeur du vecteur auxiliaire

SYNOPSIS

#include <sys/auxv.h>


unsigned long getauxval(unsigned long type);

DESCRIPTION

La fonction getauxval() récupère des valeurs du vecteur auxiliaire, un mécanisme que le chargeur de binaires ELF du noyau utilise pour passer certains renseignements à l'espace utilisateur quand un programme est exécuté.

Toutes les entrées du vecteur auxiliaire sont des paires de valeurs : un type qui identifie ce que l'entrée représente, et une valeur pour ce type. En fonction de l'argument type, getauxval() renvoie la valeur correspondante.

Les valeurs renvoyées pour tous les types sont données dans la liste suivante. Les différentes valeurs de type ne sont pas toutes présentes suivant l'architecture.

AT_BASE
L'adresse de base de l'interpréteur du programme (l'éditeur de liens dynamique en général).
AT_BASE_PLATFORM
Une chaîne identifiant la plateforme réelle ; peut être différente de AT_PLATFORM (PowerPC seulement).
AT_CLKTCK
La fréquence utilisée par times(2) pour compter. Cette valeur peut aussi être obtenue avec sysconf(_SC_CLK_TCK).
AT_DCACHEBSIZE
La taille du bloc de cache de données.
AT_EGID
Le GID effectif du thread.
AT_ENTRY
L'adresse d'entrée de l'exécutable.
AT_EUID
L'UID effectif du thread.
AT_EXECFD
Le descripteur de fichier du programme.
AT_EXECFN
Le nom de chemin utilisé pour exécuter le programme.
AT_FLAGS
Les attributs (inutilisé).
AT_FPUCW
Le mot de contrôle FPU utilisé (architecture SuperH seulement). Cela donne quelques renseignements sur l'initialisation FPU réalisée par le noyau.
AT_GID
Le GID réel du thread.
AT_HWCAP
Un pointeur vers un masque multioctet de bits dont les réglages indiquent des capacités processeurs détaillées. Le contenu du masque de bits dépend du matériel (consultez par exemple le fichier arch/x86/include/asm/cpufeature.h des sources du noyau pour obtenir des précisions sur l'architecture x86). Une version lisible des mêmes renseignements est disponible dans /proc/cpuinfo.
AT_ICACHEBSIZE
La taille du bloc de cache d'instructions.
AT_PAGESZ
La taille de page du système (la même valeur que celle renvoyée par sysconf(_SC_PAGESIZE)).
AT_PHDR
L'adresse des en-têtes du programme de l'exécutable.
AT_PHENT
La taille de l'entrée des en-têtes du programme.
AT_PHNUM
Le nombre d'en-têtes du programme.
AT_PLATFORM
Un pointeur vers une chaîne qui identifie la plate-forme matérielle sur laquelle le programme est exécuté. L'éditeur de liens dynamique utilise cela dans l'interprétation des valeurs rpath.
AT_RANDOM
L'adresse de seize octets contenant une valeur aléatoire.
AT_SECURE
Une valeur non nulle si l'exécutable devrait être traité de façon sécurisée. Le plus souvent, une valeur non nulle indique que le processus exécute un programme Set-UID ou Set-GID ; sinon, une valeur non nulle pourrait être provoquée par un module de sécurité Linux. Quand cette valeur est non nulle, l'éditeur de liens dynamique désactive l'utilisation de certaines variables d'environnement (consultez ld-linux.so(8)) et glibc modifie d'autres facettes de son comportement (consultez aussi secure_getenv(3)).
AT_SYSINFO
Le point d'entrée vers la fonction d'appel système dans le vDSO. N'est ni présent ni nécessaire sur toutes les architectures (par exemple absent sur x86-64).
AT_SYSINFO_EHDR
L'adresse d'une page contenant le vDSO (objet partagé dynamique virtuel, « virtual dynamic shared object ») que le noyau crée pour fournir des implémentations rapides de certains appels systèmes.
AT_UCACHEBSIZE
La taille du bloc de cache unifié.
AT_UID
L'UID réel du thread.

VALEUR RENVOYÉE

Si elle réussit, getauxval() renvoie la valeur correspondant au type. Si type n'est pas trouvé, 0 est renvoyé.

ERREURS

Aucune erreur n'est diagnostiquée.

VERSIONS

La fonction getauxval() est disponible depuis la glibc 2.16.

ATTRIBUTS

Multithreading (voir pthreads(7))

La fonction getauxval() est sûre dans un contexte multithread.

CONFORMITÉ

Cette fonction est une extension non normalisée de la glibc.

NOTES

Le principal utilisateur des renseignements du vecteur auxiliaire est l'éditeur de liens dynamique ld-linux.so(8). Le vecteur auxiliaire est un raccourci pratique et efficace qui permet au noyau de communiquer un certain jeu de renseignements standards dont l'éditeur de liens a souvent ou toujours besoin. Dans certains cas, les mêmes renseignements pourraient être obtenus à l'aide d'appels système, mais l'utilisation du vecteur auxiliaire est moins coûteuse.

Le vecteur auxiliaire réside juste au-dessus de la liste d'arguments et de l'environnement dans l'espace d'adresse du processus. Le vecteur auxiliaire fourni à un programme peut être affiché en définissant la variable d'environnement LD_SHOW_AUXV lors de l'exécution d'un programme :


    $ LD_SHOW_AUXV=1 sleep 1

Le vecteur auxiliaire de n'importe quel processus peut (en fonction des droits du fichier) être obtenu dans /proc/PID/auxv. Consultez proc(5) pour obtenir de plus amples renseignements.

COLOPHON

Cette page fait partie de la publication 3.65 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

Veuillez signaler toute erreur de traduction en écrivant à <[email protected]> ou par un rapport de bogue sur le paquet manpages-fr.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».