Provided by: freebsd-manpages_12.2-1_all bug

NAME

     DEV_MODULE — device 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 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 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>.