.\" Copyright (C) 1996 Free Software Foundation, Inc. .\" This file is distributed accroding to the GNU General Public License. .\" See the file COPYING in the top level source directory for details. .\" .\" Japanese Version Copyright (c) 1997,1999 HANATAKA Shinya and FUJIWARA Teruyoshi .\" all rights reserved. .\" Translated Sat Aug 30 13:53:25 JST 1997 .\" by HANATAKA Shinya .\" Merged with another translation Sun Aug 15 10:39:49 JST 1999 .\" by FUJIWARA Teruyoshi .\" .\"WORD: loadable module ローダブルモジュール .\" .TH INIT_MODULE 2 "26 Dec 1996" "Linux 2.1.17" "Linux Module Support" .SH 名前 init_module \- ローダブルモジュールのエントリを初期化する .SH 書式 .nf .B #include .sp .BI "int init_module(const char *" name ", struct module *" image ); .fi .SH このマニュアルについて これは、Linux Kernel 2.4 の時代に使われていた modutils パッケージ所収の古いマニュアルです。(2022/12/02, Linux JM Project) .SH 説明 .B init_module は再配置されたモジュールイメージをカーネル空間にロードし、その モジュールの \fIinit\fP 関数を実行する。 .PP モジュールイメージは、先頭部分にモジュール構造体が置かれ、その後に適切 なコードとデータが配置される。モジュール構造体の定義を以下に示す: .PP .RS .nf 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 }; .fi .RE .PP \fInext\fP と \fIrefs\fP 以外の全てのポインタ要素は、 モジュールの本体内部を指し、カーネル空間での適切な値で初期化される (つまりモジュールの残りの部分と共に再配置される)ことが期待される。 .PP このシステムコールを使えるのはユーパーユーザだけである。 .SH 返り値 成功した場合は 0 が返される。エラーの場合は \-1 が返され、\fIerrno\fP に適切な値が設定される。 .SH エラー .TP .B EPERM 呼び出しを行ったユーザがスーパーユーザでない。 .TP .B ENOENT その名前を持つモジュールが存在しない。 .TP .B EINVAL \fIimage\fP スロットの一部に誤った値が入っているか、 \fIimage->name\fP が元のモジュールの名前に一致していないか、 \fIimage->deps\fP エントリの一部がロードされたモジュールに対応していない。 あるいは同様の別の矛盾が起きている。 .TP .B EBUSY モジュールの初期化ルーチンが失敗した。 .TP .B EFAULT \fIname\fP あるいは \fIimage\fP が、プログラムがアクセスできる アドレス空間の外部である。 .SH 関連項目 .BR create_module "(2), " delete_module "(2), " query_module "(2)"