DECLARE_MODULE(9)

名称
DECLARE_MODULE - カーネルモジュール宣言マクロ

書式
<sys/param.h> <sys/kernel.h> <sys/module.h> DECLARE_MODULE(name, moduledata_t data, sub, order)

解説
DECLARE_MODULE() マクロは一般的なカーネルモジュールを宣言します。 これは SYSINIT() マクロを使用して、そのモジュールをシステムに登録します。 DECLARE_MODULE() は通常、 DRIVER_MODULE(9), DEV_MODULE(9) および SYSCALL_MODULE(9) のような他のマクロの中で使用されます。 しかしながら、例えば動的な sysctl を実装するために、 直接呼び出されることがもちろん可能です。

DECLARE_MODULE() への引数は以下のとおりです。

name はモジュールの名前で、そのモジュールを識別するために SYSINIT() の呼び出しで使用されます。

data は 2 つの主要な要素を含む moduledata_t 構造体です。その要素は、 module_t 構造体の中で使用されるモジュール名の正式名称および型 modeventhand_t のイベントハンドラ関数へのポインタです。

sub は SYSINIT() マクロへの直接の引数です。 このための有効な値は sysinit_sub_id 列挙に <(> sys/kernel.h を参照) 含まれていて、システムスタートアップインタフェースの型を明示します。 例えば DRIVER_MODULE(9) マクロは、ドライバモジュールはデバイスのためのドライバを含んでいるので、ここに SI_SUB_DRIVERS の値を使用します。 実行時にロードされるカーネルモジュールには、 SI_SUB_EXEC の値が共通です。

order の値は SYSINIT() のためのもう 1 つの引数です。 これは KLD のサブシステム内の初期化の順序を意味します。 有効な値は sysinit_elem_order 列挙 (<kernel.h>) に定義されています。

関連項目
DEV_MODULE(9), DRIVER_MODULE(9), module(9), SYSCALL_MODULE(9)

/usr/include/sys/kernel.h, /usr/share/examples/kld

作者
-nosplit このマニュアルページは Andrew Reiter <arr@watson.org> が書いた KLD Facility Programming Tutorial に触発されて、 Alexander Langer <alex@FreeBSD.org> が書きました。