スポンサーリンク

DEV_MODULE(9) FreeBSD カーネル開発者マニュアル 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 はモジュール名で、 (arg を引数として持つ) evh はそのモジュールのためのイベントハンドラです (詳細については DECLARE_MODULE(9) を参照)。イベントハンドラはロード時に make_dev() でデバ イスを作成し、アンロードされる時に destroy_dev() でそのデバイスを破壊する ことを、期待されています。

使用例

#include <sys/module.h>
#include <sys/conf.h>

static struct cdevsw foo_devsw = { ... };

static dev_t 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);

関連項目

DECLARE_MODULE(9), destroy_dev(9), make_dev(9), module(9)

作者

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

FreeBSD 10.0 March 11, 2001 FreeBSD 10.0

スポンサーリンク