DragonFly On-Line Manual Pages


DEV_MODULE(9)	      DragonFly Kernel Developer's Manual	 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 cor- rect args, where name is the name of the module and evh (with its argu- ment 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>. DragonFly 3.9 February 10, 2009 DragonFly 3.9