init_module

Autres langues

Langue: pl

Autres versions - même langue

Version: 26 grudnia 1996 (fedora - 25/11/07)

Autres sections - même nom

Section: 2 (Appels système)

NAZWA   

init_module - inicjalizacja wpisu ładowalnego modułu

SKŁADNIA

 #include <linux/module.h>
 
 int init_module(const char *name, struct module *image);
 

OPIS

init_module ładuje do przestrzeni jądra przesunięty obraz modułu i wykonuje funkcję init tego modułu.

Obraz modułu rozpoczyna się od struktury modułu, po której następują, odpowiednio, kod i dane. Struktura modułu jest zdefiniowana następująco:

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

Wszystkie pola wskazujące, oprócz next i refs, powinny wskazywać na adresy w ciele modułu i zostać zainicjalizowane odpowiednio dla przestrzeni adresowej jądra, tzn. przesunięte wraz z resztą modułu.

Ta funkcja jest dostępna jedynie dla superużytkownika.

RETURN VALUE

W przypadku sukcesu zwracane jest zero. W przypadku błędu, -1 i odpowiednio ustawiane jest errno.

BŁĘDY

EPERM
Użytkownik nie jest superużytkownikiem.
ENOENT
Nie istnieje moduł o tej nazwie.
EINVAL
Któryś z wpisów image jest wypęłniony nieprawidłowo, image->name różni się od oryginalnej nazwy modułu, któryś z wpisów image->deps nie odpowiada żadnemu załadowanemu modułowi lub inna podobna niespójność.
EBUSY
Procedura inicjalizacji modułu zakończyła się niepowodzeniem.
EFAULT
name lub image znajduje się poza dostępną przestrzenią adresową.

ZOBACZ TAKŻE

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