スポンサーリンク

DRIVER_MODULE(9) FreeBSD カーネル開発者マニュアル DRIVER_MODULE(9)

名称

DRIVER_MODULE − カーネルドライバ宣言マクロ

書式

#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/bus.h>
#include <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⟩ が書きました。

FreeBSD 10.0 May 16, 2000 FreeBSD 10.0

スポンサーリンク