tail head cat sleep
QR code linking to this page

manページ  — MODULE

名称

module – カーネルモジュールの構造記述

内容

解説

カーネル内の個々のモジュールは module_t 構造体によって記述されます。 この構造体は、幾つかのカーネルの内部データはもちろん、デバイスの名前、 固有の ID 番号、イベントハンドラ関数へのポインタ、および イベントハンドラに渡される引数を含んでいます。

DECLARE_MODULE(9) マクロはシステムにモジュールを登録します。

そのモジュールがロードされた時に、 what 引数に MOD_LOAD が設定されて、イベントハンドラ関数が呼び出されます。

アンロード時は最初に what に MOD_QUIESCE が設定されて呼び出されます。 アンロードが強制されなかった場合には、0 ではない値が返ることで アンロードの発生を防ぎます。

アンロードが継続する場合には what MOD_UNLOAD が設定されます。 モジュールがこれに 0 ではない値を返す場合には、アンロードは起こりません。

MOD_QUIESCE と MOD_UNLOAD の違いは、モジュールが使用中であれば モジュールは MOD_QUIESCE を失敗させるべきであり、それに対して、 モジュールのアンロードが不可能な場合にのみ MOD_UNLOAD が失敗するべきです。 例えば、解除することができないそのモジュールへのメモリ参照がある場合です。

システムがシャットダウンされる時には、 what MOD_SHUTDOWN の値を含みます。

モジュールは what の値を認識できない場合は EOPNOTSUPP を返すべきです。

使用例

#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/module.h>

static int foo_handler(module_t mod, int /*modeventtype_t*/ what, void *arg);

static moduledata_t mod_data= { "foo", foo_handler, 0 };

MODULE_VERSION(foo, 1); MODULE_DEPEND(foo, bar, 1, 3, 4);

DECLARE_MODULE(foo, mod_data, SI_SUB_EXEC, SI_ORDER_ANY);

関連項目

DECLARE_MODULE(9), DEV_MODULE(9), DRIVER_MODULE(9), MODULE_DEPEND(9), MODULE_VERSION(9), SYSCALL_MODULE(9)

/usr/share/examples/kld

作者

このマニュアルページは Alexander Langer <alex@FreeBSD.org> が書きました。

MODULE (9) March 1, 2001

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.