| | |
query_module - Demander au noyau des informations concernant les
modules.
#include <linux/module.h>
int query_module(const char *nom, int which,
void *buf, size_t taille_buf, size_t *ret);
query_module interroge le noyau pour obtenir des informations
concernant les modules chargeables. La nature précise des informations,
et leurs formats dépendent de l'argument which, qui joue le rôle de sélecteur
de fonction.
Certaines fonctions nécessitent le nom d'un module effectivement
chargé, certaines permettent à nom d'être NULL, afin d'obtenir les informations
propres au noyau.
- Réussit toujours. Permet de
vérifier l'appel-système.
- QM_MODULES
- Renvoie le nom de tous les modules chargés.
Le buffer de sortie est rempli avec des chaînes de caractères terminées
par des caractères nuls. ret contient le nombre de modules.
- QM_DEPS
- Renvoie
le nom de tous les modules utilisés par le module indiqué. Le buffer de
sortie est rempli avec des chaînes de caractères terminées par des caractères
nuls. ret contient le nombre de modules.
- QM_REFS
- Renvoie le nom de tous les
modules utilisant le module indiqué. C'est la fonction inverse de QM_DEPS.
Le buffer de sortie est rempli avec des chaînes de caractères terminées
par des caractères nuls. ret contient le nombre de modules.
- QM_SYMBOLS
- Renvoie
les symboles et les valeurs exportés par le noyau, ou par le module indiqué.
Le buffer de sortie est un tableau de structures :
struct module_symbol
{
unsigned long value;
unsigned long name;
};
suivi de chaînes terminées par des caractères nuls. La valeur de name correspond
au décalage entre le nom du symbole et le début du buffer buf. ret contient
le nombre de symboles.
- QM_INFO
- Renvoie des informations diverses concernant
le module indiqué. Le buffer de sortie est une structure :
struct module_info
{
unsigned long address;
unsigned long size;
unsigned long flags;
};
ou address correspond à l'adresse à laquelle le module réside dans le noyau,
size est la taille, en octets, du module, et flags est un masque de MOD_RUNNING,
MOD_AUTOCLEAN, etc. qui indiquent l'état actuel du module. ret correspond
à la taille de la structure module_info.
query_modules renvoie
zéro s'il réussit, ou -1 s'il échoue, auquel cas errno contient le code d'erreur.
- ENOENT
- Il n'y a pas de module de ce nom.
- EINVAL
- La valeur de which
est invalide, ou le nom est NULL et la sous-fonction n'est pas appropriée
pour le noyau.
- ENOSPC
- Le buffer fourni est trop petit. ret contient la taille
minimum nécessaire.
- EFAULT
- nom, buf, ou ret pointe en dehors de l'espace
d'adressage accessible.
create_module(2)
, init_module(2)
, delete_module(2)
.
Christophe Blaess, 1997.
Table des matières
© 1996-2000 Adaptation française "Christophe Blaess"
| |