getauxval
Section: C Library Functions (3)
Updated: 7 janvier 2023
Index
Return to Main Contents
NOM
getauxval - Récupérer une valeur du vecteur auxiliaire
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
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
sur toutes les architectures.
- AT_BASE
-
L'adresse de base de l'interpréteur du programme (l'éditeur de liens
dynamiques en général).
- AT_BASE_PLATFORM
-
Un pointeur vers une chaîne (PowerPC et MIPS seulement). Sur PowerPC, cette
chaîne identifie la plateforme réelle et elle peut être différente de
AT_PLATFORM. Sur MIPS, elle identifie le niveau ISA (depuis Linux 5.7).
- 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
-
Un pointeur vers une chaîne contenant le nom de chemin utilisé pour exécuter
le programme.
- AT_FLAGS
-
Drapeaux (inutilisé).
- AT_FPUCW
-
Le mot de contrôle de FPU utilisé (architecture SuperH seulement). Cette
information donne quelques renseignements sur l'initialisation FPU réalisée
par le noyau.
- AT_GID
-
Le GID réel du thread.
- AT_HWCAP
-
Un masque de bits, dépendant de l'architecture et de l'ABI, qui précise les
capacités détaillées du processeur. 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 ; la valeur renvoyée est le premier mot
sur 32 bits du tableau qui y est décrit). Une version humainement lisible
des mêmes renseignements est disponible dans /proc/cpuinfo.
- AT_HWCAP2 (depuis la glibc 2.18)
-
Autres indications dépendant de la machine à propos des capacités du
processeur.
- AT_ICACHEBSIZE
-
La taille du bloc de cache d'instructions.
-
-
AT_L1D_CACHEGEOMETRY
La géométrie du cache de données L1 codée avec la taille d'une ligne de
cache en octets dans les 16 bits inférieurs et l'associativité du cache dans
les 16 bits suivants. L'associativité est telle que si N est la valeur sur
16 bits, le cache est associatif par ensembles de N blocs.
- AT_L1D_CACHESIZE
-
La taille du cache de données L1.
- AT_L1I_CACHEGEOMETRY
-
La géométrie du cache d'instructions L1 codée de la même manière que
AT_L1D_CACHEGEOMETRY.
- AT_L1I_CACHESIZE
-
La taille du cache d'instructions L1.
- AT_L2_CACHEGEOMETRY
-
La géométrie du cache L2 codée de la même manière que
AT_L1D_CACHEGEOMETRY.
- AT_L2_CACHESIZE
-
La taille du cache L2.
- AT_L3_CACHEGEOMETRY
-
La géométrie du cache L3 codée de la même manière que
AT_L1D_CACHEGEOMETRY.
- AT_L3_CACHESIZE
-
La taille du cache L3.
- 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 dynamiques utilise
cette chaîne dans l'interprétation des valeurs rpath.
- AT_RANDOM
-
L'adresse de seize octets contenant une valeur aléatoire.
- AT_SECURE
-
Cet attribut possède une valeur non nulle si l'exécutable doit être traité
de façon sécurisée. Le plus souvent, une valeur non nulle indique que le
processus exécute un binaire set-user-ID ou set-group-ID (si bien que ses
UID ou GID réels et effectifs sont différents) ou qu'il acquiert des
capacités (« capabilities ») en exécutant un fichier binaire qui possède des
capacités (voir capabilities(7)) ; sinon, une valeur non nulle pourrait
être attribuée par un module de sécurité Linux. Quand cette valeur est non
nulle, l'éditeur de liens dynamiques désactive l'utilisation de certaines
variables d'environnement (consultez ld-linux.so(8)) et la 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é, la valeur renvoyée est 0.
ERREURS
- ENOENT (depuis la glibc 2.19)
-
Aucune entrée correspondant au type n'a pu être trouvée dans le vecteur
auxiliaire.
VERSIONS
La fonction getauxval() est disponible depuis la glibc 2.16.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface | Attribut | Valeur
|
getauxval()
| Sécurité des threads | MT-Safe
|
STANDARDS
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 dynamiques 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.
BOGUES
Avant l'ajout du code d'erreur ENOENT à partir de la glibc 2.19, il
n'existait aucun moyen de distinguer sans ambiguïté le cas où type
n'avait pas pu être trouvé du cas où la valeur correspondant à type était
égale à zéro.
VOIR AUSSI
execve(2), secure_getenv(3), vdso(7), ld-linux.so(8)
TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>
et
Lucien Gentis <lucien.gentis@waika9.com>
Cette traduction est une documentation libre ; veuillez vous reporter à la
GNU General Public License version 3
concernant les conditions de copie et
de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- VERSIONS
-
- ATTRIBUTS
-
- STANDARDS
-
- NOTES
-
- BOGUES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 04:45:54 GMT, May 23, 2024