init_module
1. init_module.2.man
Manpage of INIT_MODULE
INIT_MODULE
Section: Руководство программиста Linux (2)Updated: 2006-02-09
Index Return to Main Contents
ИМЯ
init_module - инициализировать элемент загружаемого модуляОБЗОР
#include <linux/module.h> int init_module(const char *name, struct module *image);
ОПИСАНИЕ
init_module() загружает образ перемещаемого модуля в пространство ядра и запускает функцию init из модуля.Образ модуля начинается со структуры модуля, за которой следует код и данные. Структура модуля:
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
};
Все поля указателей, за исключением next и refs, указывают в тело модуля и будут инициализированы в соответствии с адресным пространством ядра, то есть перемещены с остальной частью модуля.
Данный системный вызов требует особых прав.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении возвращается ноль. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.ОШИБКИ
- EBUSY
- Процедура инициализации из модуля завершилась неудачно.
- EFAULT
- name или image вне доступного программного адресного пространства.
- EINVAL
- Какой-то из слотов image заполнен неправильно, image->name не соответствует первоначальному имени модуля, какой-то элемент image->deps не соответствует загружаемому модулю, или возникло какое-то подобное расхождение.
- ENOENT
- Модуль с таким именем не существует.
- EPERM
- Вызывающий не имеет прав (не имеет мандата CAP_SYS_MODULE).
СООТВЕТСТВИЕ СТАНДАРТАМ
init_module() есть только в Linux.СМОТРИТЕ ТАКЖЕ
create_module(2), delete_module(2), query_module(2)
Index
This document was created by man2html using the manual pages.
Time: 17:41:42 GMT, May 11, 2012



