init_module - initialize a loadable module entry


SYNOPSIS

       #include <linux/module.h>

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


DESCRIPTION

       init_module  loads  the relocated module image into kernel
       space and runs the module's init function.

       The module image begins with a  module  structure  and  is
       followed  by  code  and  data  as appropriate.  The module
       structure is defined as follows:

              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
              };

       All of the pointer fields, with the exception of next  and
       refs,  are expected to point within the module body and be
       initialized as appropriate for kernel  space,  i.e.  relo­
       cated with the rest of the module.

       This system call is only open to the superuser.


RETURN VALUE

       On  success,  zero  is returned.  On error, -1 is returned
       and errno is set appropriately.


ERRORS

       EPERM  The user is not the superuser.

       ENOENT No module by that name exists.
              does  not  correspond  to the original module name,
              some image->deps entry does  not  correspond  to  a
              loaded module, or some other similar inconsistency.

       EBUSY  The module's initialization routine failed.

       EFAULT name or image is outside the  program's  accessible
              address space.


SEE ALSO

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