EN JA
INIT_MODULE(2)
INIT_MODULE(2) Linux Module Support INIT_MODULE(2)

名前

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

nextrefs 以外の全てのポインタ要素は、モジュールの本体内部を指し、カーネル空間での適切な値で初期化される (つまりモジュールの残りの部分と共に再配置される)ことが期待される。

このシステムコールを使えるのはユーパーユーザだけである。

返り値

成功した場合は 0 が返される。エラーの場合は-1 が返され、 errno に適切な値が設定される。

エラー

EPERM
呼び出しを行ったユーザがスーパーユーザでない。
ENOENT
その名前を持つモジュールが存在しない。
EINVAL
image スロットの一部に誤った値が入っているか、 image->name が元のモジュールの名前に一致していないか、 image->deps エントリの一部がロードされたモジュールに対応していない。あるいは同様の別の矛盾が起きている。
EBUSY
モジュールの初期化ルーチンが失敗した。
EFAULT
name あるいは image が、プログラムがアクセスできるアドレス空間の外部である。

関連項目

create_module(2), delete_module(2), query_module(2)
 
26 Dec 1996 Linux 2.1.17