DRIVER_MODULE(9)

名称
DRIVER_MODULE - カーネルドライバ宣言マクロ

書式
<sys/types.h> <sys/bus.h> <sys/module.h> DRIVER_MODULE(name, busname, driver_t driver, devclass_t devclass, modeventhand_t evh, void *arg) MULTI_DRIVER_MODULE(name, busname, driver_t drivers[], devclass_t devclass, modeventhand_t evh, void *arg)

解説
DRIVER_MODULE() マクロは、カーネルドライバを宣言します。 DRIVER_MODULE() は実際のドライバ宣言に展開し、そこで name はドライバとその関数の接頭辞として使用されます。 これはプレインテキストとして与えられ、 char または char * ではないことに注意してください。

busname はドライバの親のバス (PCI, ISA, PPBUS, その他) で、 ‘pci’, ‘isa’, ‘ppbus’ 等です。

DRIVER_MODULE() の中で使用される識別子は、ドライバの名前と別のものにすることができます。 また、異なるバス上には同じドライバ識別子が存在できます。 これは、同じドライバを使用する同一または異なるバス上の種々のカード用に、 フロントエンドをうまくきれいに作成する方法です。 例えば、次のようにできます。

DRIVER_MODULE(foo, isa, foo_driver, foo_devclass, NULL, NULL);

DRIVER_MODULE(foo, pci, foo_driver, foo_devclass, NULL, NULL);

driver は driver_t 型のドライバで、ドライバについての情報を含み、それゆえ DRIVER_MODULE() を呼び出すための最も重要な 2 つの部分のうちの 1 つです。

引数 devclass はデバイスについてのカーネル内部の情報を含み、 カーネルドライバモジュールの内部で使用されます。

引数 evh はドライバ (またはモジュール) がロードまたはアンロードされた時に 呼び出されるイベントハンドラです ( module(9) を参照してください)。

現時点では arg は使用されず、 NULL ポインタであるべきです。

MULTI_DRIVER_MODULE() は DRIVER_MODULE() の特殊バージョンであり、 単一のドライバインスタンスの代りにドライバリストを取ります。

関連項目
device(9), driver(9), module(9)

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