| DEV_MODULE(9) | FreeBSD Kernel Developer's Manual | DEV_MODULE(9) |
名称
DEV_MODULE — デバイスドライバモジュール宣言マクロ書式
#include < sys/param.h>#include < sys/kernel.h>
#include < sys/module.h>
#include < sys/conf.h>
DEV_MODULE( name, modeventhand_t evh, void *arg);
解説
DEV_MODULE() マクロは、デバイスドライバのカーネルモジュールを宣言します。それは、 moduledata_t 構造体に書き込んで、次に、正しい引数で DECLARE_MODULE() を呼びだします、ここで name は、モジュールの名前で、 evh (その引数 arg を付けて) は、モジュールのためにイベントハンドラです (詳細については、 DECLARE_MODULE(9) を参照)。イベントハンドラは、ロード時に make_dev() でデバイスを作成し、 destroy_dev() を使用して、それがアンロードされるとき、破壊することになっています。使用例
#include <sys/module.h>
#include <sys/conf.h>
static struct cdevsw foo_devsw = { ... };
static struct cdev *sdev;
static int
foo_load(module_t mod, int cmd, void *arg)
{
int err = 0;
switch (cmd) {
case MOD_LOAD:
sdev = make_dev(&foo_devsw, 0, UID_ROOT, GID_WHEEL, 0600, "foo");
break; /* 成功 */
case MOD_UNLOAD:
case MOD_SHUTDOWN:
destroy_dev(sdev);
break; /* 成功 */
default:
err = EINVAL;
break;
}
return(err);
}
DEV_MODULE(foo, foo_load, NULL);
作者
このマニュアルページは、 <alex@FreeBSD.org>によって書かれました。| January 19, 2012 | FreeBSD |