DEV_MODULE(9)

NAME
DEV_MODULE - device driver module declaration macro

SYNOPSIS
#include <sys/module.h>
#include <sys/conf.h>
DEV_MODULE(name, modeventhand_t evh, void *arg);

DESCRIPTION
The DEV_MODULE() macro declares a device driver kernel module. It fills in a moduledata_t structure and then calls DECLARE_MODULE() 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 make_dev() on load and to destroy it when it is unloaded using destroy_dev().

EXAMPLES

    #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);

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

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