NOMBRE¶
init_module - inicializa una entrada de módulo cargable
SINOPSIS¶
#include <linux/module.h>
int init_module(const char *name, struct module *image);
DESCRIPCIÓN¶
init_module carga la imagen del módulo relocalizado en el espacio
del núcleo y ejecuta la función
init del módulo.
La imagen del módulo comienza con una estructura de módulo seguida
por código y datos apropiados. La estructura de módulo se define
así:
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
};
Se espera que todos los punteros, a excepción de
next y
refs, apunten dentro del cuerpo del módulo, y estén
inicializados adecuadamente al espacio del núcleo, p.ej. relocalizados
con el resto del módulo.
Esta llamada de sistema sólo esta abierta al superusuario.
VALOR DEVUELTO¶
Si hay éxito, se devuelve cero. Si hay algún error, se devuelve -1
y
errno es actualizado.
ERRORES¶
- EPERM
- El usuario no es el superusuario.
- ENOENT
- No existe ningún módulo con ese nombre.
- EINVAL
- Alguna entrada de image se llenó incorrectamente,
image->name no se corresponde con el nombre original del
módulo, alguna entrada de image->deps no se corresponde
con un módulo cargado, o alguna otra inconsistencia similar.
- EBUSY
- La rutina de inicialización del módulo falló.
- EFAULT
- name o image está fuera del espacio de direcciones
accesible al programa.
VÉASE TAMBIÉN¶
create_module(2),
delete_module(2),
query_module(2).