man.bsd.lv manual page server

Manual Page Search Parameters

DEV_MODULE(9) Kernel Developer's Manual DEV_MODULE(9)

DEV_MODULEdevice driver module declaration macro

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

DEV_MODULE(name, modeventhand_t evh, void *arg);

The () macro declares a device driver kernel module. It fills in a moduledata_t structure and then calls () with the correct args, where name is the name of the module and evh (with its argument arg) is the event handler for the module (refer to DECLARE_MODULE(9) for more information). The event handler is supposed to create the device with () on load and to destroy it when it is unloaded using ().

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

static struct dev_ops foo_ops = { ... };

static cdev_t sdev;

static int
foo_load(module_t mod, int cmd, void *arg)
{
    int err = 0;

    dev_ops_add(&foo_ops, ...);

    switch (cmd) {
    case MOD_LOAD:
        sdev = make_dev(&foo_ops, 0, UID_ROOT, GID_WHEEL, 0600, "foo");

        /* We must obtain a reference to sdev, so we can destroy it later */
        reference_dev(sdev);
        break;          /* Success*/

    case MOD_UNLOAD:
    case MOD_SHUTDOWN:
        destroy_dev(sdev);

        /* The same mask and match must be specified, as in dev_ops_add() */
        dev_ops_remove(&foo_ops, ...);
        break;          /* Success*/

    default:
        err = EINVAL;
        break;
    }

    return(err);
}

DEV_MODULE(foo, foo_load, NULL);

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

This manual page was written by Alexander Langer <alex@FreeBSD.org>.

February 10, 2009 DragonFly-5.6.1