FreeBSD Manual Pages
DECLARE_MODULE(9) FreeBSD Kernel Developer's Manual DECLARE_MODULE(9) NAME DECLARE_MODULE -- kernel module declaration macro SYNOPSIS #include <sys/param.h> #include <sys/kernel.h> #include <sys/module.h> DECLARE_MODULE(name, moduledata_t data, sub, order); DECLARE_MODULE_TIED(name, moduledata_t data, sub, order); DESCRIPTION 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. A module declared with DECLARE_MODULE_TIED() will load only if the run- ning kernel version (as specified by __FreeBSD_version) is identical to that on which it was built. This declaration should be used by modules which depend on interfaces beyond the stable kernel KBI (such as ABI emu- lators or hypervisors that rely on internal kernel structures). DECLARE_MODULE() will behave like DECLARE_MODULE_TIED() when compiled with modules built with the kernel. This allows locks and other synchro- nization primitives to be inlined safely. The arguments 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 of- ficial 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 inter- faces. The DRIVER_MODULE(9) macro uses a value of SI_SUB_DRIVERS here for example, since these modules contain a driver for a de- vice. 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 ini- tialization within the subsystem. Valid values are defined in the sysinit_elem_order enumeration (<sys/kernel.h>). SEE ALSO DEV_MODULE(9), DRIVER_MODULE(9), module(9), SYSCALL_MODULE(9) /usr/include/sys/kernel.h, /usr/share/examples/kld AUTHORS This manual page was written by Alexander Langer <alex@FreeBSD.org>, in- spired by the KLD Facility Programming Tutorial by Andrew Reiter <arr@watson.org>. FreeBSD 13.0 February 13, 2018 FreeBSD 13.0
NAME | SYNOPSIS | DESCRIPTION | SEE ALSO | AUTHORS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=DECLARE_MODULE&sektion=9&manpath=FreeBSD+12.1-RELEASE+and+Ports>