Scroll to navigation

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

NAME

DEV_MODULEdevice driver module declaration macro

SYNOPSIS

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

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

DESCRIPTION

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 ().

EXAMPLES

#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;          /* Success*/

    case MOD_UNLOAD:
    case MOD_SHUTDOWN:
        destroy_dev(sdev);
        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>.

January 19, 2012 Debian