Provided by: freebsd-manpages_10.1~RC1-1_all bug


     DECLARE_MODULE — kernel module declaration macro


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

     DECLARE_MODULE(name, moduledata_t data, sub, order);


     The DECLARE_MODULE() macro declares a generic kernel module.  It is used to register the
     module with the system, using the SYSINIT() macro.  DECLARE_MODULE() is usually used within
     other macros, such as DRIVER_MODULE(9), DEV_MODULE(9) and SYSCALL_MODULE(9).  Of course, it
     can also be called directly, for example in order to implement dynamic sysctls.

     The arguments it expects are:

     name    The module name, which will be used in the SYSINIT() call to identify the module.

     data    A moduledata_t structure, which contains two main items, the official name of the
             module name, which will be used in the module_t structure and a pointer to the event
             handler function of type modeventhand_t.

     sub     An argument directed to the SYSINIT() macro.  Valid values for this are contained in
             the sysinit_sub_id enumeration (see <sys/kernel.h>) and specify the type of system
             startup interfaces.  The DRIVER_MODULE(9) macro uses a value of SI_SUB_DRIVERS here
             for example, since these modules contain a driver for a device.  For kernel modules
             that are loaded at runtime, a value of SI_SUB_EXEC is common.

     order   An argument for SYSINIT().  It represents the KLDs order of initialization within
             the subsystem.  Valid values are defined in the sysinit_elem_order enumeration



     /usr/include/sys/kernel.h, /usr/share/examples/kld


     This manual page was written by Alexander Langer <>, inspired by the KLD
     Facility Programming Tutorial by Andrew Reiter <>.