INIT_MODULE(2)

NOM
init_module - Initialiser un module chargeable.

SYNOPSIS
#include <linux/module.h>

int init_module(const char *nom, struct module *image);

DESCRIPTION
init_module charge l'image du module dans l'espace du noyau, et lance la fonction init du module.

L'image du module commence par une structure, et est suivie par le code, et les donnees necessaires. La structure de module est definie ainsi :

    struct module
    {
      unsigned long size_of_struct;
      struct module *next;
      const char *name;
      unsigned long size;
      long usecount;
      unsigned long flags;
      unsigned int nsyms;
      unsigned int ndeps;
      struct module_symbol *syms;
      struct module_ref *deps;
      struct module_ref *refs;
      int (*init)(void);
      void (*cleanup)(void);
      const struct exception_table_entry *ex_table_start;
      const struct exception_table_entry *ex_table_end;
    #ifdef __alpha__
      unsigned long gp;
    #endif
    };

Tous les membres de type pointeur, a l'exception de next et refs, doivent pointer dans le corps du module, et initialises correctement par rapport a l'espace du noyau. Ceci signifie qu'ils doivent etre translates correctement avec le reste du module.

Seul le Super-Utilisateur peut invoquer cet appel-systeme.

VALEUR RENVOYEE
init_module renvoie 0 s'il reussit, ou -1 s'il echoue, auquel cas errno contient le code d'erreur.

ERREURS

EPERM
    L'appelant n'est pas le Super-Utilisateur.

ENOENT
    Il n'y a pas de module de ce nom.

EINVAL
    Certains champs de l'image sont incorrects, image->name ne correspond pas au nom original du module, des elements de image->deps ne correspondent pas a un module charge, ou d'autres incoherences du meme ordre.

EBUSY
    La routine d'initialisation du module a echoue.

EFAULT
    name ou image pointe en dehors de l'espace d'adressage accessible.

VOIR AUSSI
create_module(2), delete_module(2), query_module(2).