NOM
query_module - Interroger le noyau sur divers éléments concernant les
modules
SYNOPSIS
#include <linux/module.h>
int query_module(const char *name, int which, void *buf,
size_t bufsize, size_t *ret);
query_module() demande au noyau des informations sur les modules
chargeables. L'information renvoyée est placée dans un tampon pointé
par buf. L'appelant doit indiquer la taille de buf dans bufsize. La
nature précise et le format de l'information retournée dépendent de
l'opération qui a été spécifiée dans which. Certaines opérations
nécessitent name pour identifier un module actuellement chargé,
d'autres permettent que name soit NULL, indiquant le noyau.
which peut prendre les valeurs suivantes :
0
Succès si le noyau prend en charge query_module(). Utilisé pour
tester la disponibilité de l'appel système.
QM_MODULES
Obtient les noms de tous les modules chargés. Le tampon renvoyé
consiste en une séquence de chaînes de caractères terminées par un
octet nul ; ret prend la valeur du nombre de modules.
QM_DEPS
Obtient les noms de tous les modules utilisés par le module
indiqué. Le tampon renvoyé consiste en une séquence de chaînes de
caractères terminées par un octet nul ; ret prend la valeur du
nombre de modules.
QM_REFS
Obtient le nom de tous les modules utilisant le module indiqué.
C'est l'inverse de QM_DEPS. Le tampon renvoyé consiste en une
séquence de chaînes de caractères terminées par un octet nul ; ret
prend la valeur du nombre de modules.
QM_SYMBOLS
Obtient les symboles et valeurs exportés par le noyau ou le module
indiqué. Le tampon renvoyé est un tableau de structures de la forme
suivante :
struct module_symbol {
unsigned long value;
unsigned long name;
};
suivi par des chaînes de caractères terminées par un octet nul. La
valeur de name est le décalage en caractères de la chaîne
relativement au début de buf ; ret prend la valeur du nombre de
symboles.
QM_INFO
Obtient diverses informations sur le module indiqué. Le format du
tampon de sortie est de la forme :
struct module_info {
unsigned long address;
unsigned long size;
unsigned long flags;
};
où address est l'adresse noyau où se trouve le module, size est la
taille en octets du module et flags un masque de MOD_RUNNING,
MOD_AUTOCLEAN, etc. qui indique l'état actuel du module (voir le
fichier <include/linux/module.h> dans les sources du noyau). ret
prend la valeur de la taille de la structure module_info.
VALEUR RENVOYÉE
S'il réussit, il renvoie 0. S'il échoue, il renvoie -1 et remplit
errno en conséquence.
ERREURS
EFAULT Au moins une adresse parmi name, buf ou ret est en dehors
de l'espace d'adressage accessible du programme.
EINVAL which est invalide ; ou name est NULL (indiquant le noyau),
mais cela n'est pas permis avec la valeur de which.
ENOENT Il n'existe aucun module de nom name.
ENOSPC La taille du tampon fournie est trop petite ; ret prend la
valeur de la taille minimum nécessaire.
ENOSYS query_module() n'est pas pris en charge par cette version du
noyau.
CONFORMITÉ
query_module() est spécifique à Linux.
NOTES
Cet appel système est présent dans Linux jusqu'au noyau 2.4 ; il a été
retiré du noyau 2.6. Certaines informations qui étaient disponibles
via query_module() peuvent être obtenues avec /proc/modules,
/proc/kallsyms et /sys/modules.
VOIR AUSSI
create_module(2), delete_module(2), get_kernel_syms(2), init_module(2)
COLOPHON
Cette page fait partie de la publication 3.32 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
Ce document est une traduction réalisée par Alain Portal <aportal AT
univ-montp2 DOT fr> le 21 juillet 2006 et révisée le 8 janvier 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 query_module
». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas,
toute erreur dans cette page de manuel.
Révisé pour ce site par l'équipe man-linux-magique.net (mai 2011).