DEV_MODULE(9)

名称
DEV_MODULE - デバイスドライバモジュール宣言マクロ

書式
<sys/param.h> <sys/kernel.h> <sys/module.h> <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> が書きました。