最終更新:2015-10-27 (火) 17:49:45 (3103d)
init_module
Top / init_module
Linux/システムコール
- load a kernel module
int init_module(void *module_image, unsigned long len, const char *param_values);
- ELF イメージをカーネル空間にロードし、 必要なシンボルの配置変更を行い、 モジュールパラメーターを呼び出し元から指定された値に初期化し、 最後にそのモジュールのinit関数を実行する
- init_moduleシステムコールはsys_init_moduleというカーネル関数を呼び出す
実装
- kernel/module.c
- SYSCALL_DEFINE3(init_module, void __user *, umod, unsigned long, len, const char __user *, uargs)
呼び出し
- may_init_module?
- copy_module_from_user?
- load_module - Allocate and load the module
- do_init_module - This is where the real work happens.
insmod/modprobe
- insmod コマンドは単にinit_moduleシステムコールを使って、モジュールのバイナリーをカーネルにコピーすることしかしません。残りの作業は、カーネルが引き受けます。
Linux/カーネルモジュール
- insmod時に呼ばれるカーネルモジュールの関数
- module_initマクロで任意の関数に変更できる
定義
- kernel/module.h?
関連
- cleanup_module?