Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

declare_module(9) [freebsd man page]

DECLARE_MODULE(9)					   BSD 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); 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. 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 (<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>, inspired by the KLD Facility Programming Tutorial by Andrew Reiter <arr@watson.org>. BSD
January 6, 2005 BSD

Check Out this Related Man Page

MODULE(9)						   BSD Kernel Developer's Manual						 MODULE(9)

NAME
module -- structure describing a kernel module DESCRIPTION
Each module in the kernel is described by a module_t structure. The structure contains the name of the device, a unique ID number, a pointer to an event handler function and to an argument, which is given to the event handler, as well as some kernel internal data. The DECLARE_MODULE(9) macro registers the module with the system. When the module is loaded, the event handler function is called with the what argument set to MOD_LOAD. On unload it is first called with what set to MOD_QUIESCE. If the unload was not forced, a non-zero return will prevent the unload from hap- pening. If the unload continues what is set to MOD_UNLOAD. If the module returns non-zero to this, the unload will not happen. The difference between MOD_QUIESCE and MOD_UNLOAD is that the module should fail MOD_QUIESCE if it is currently in use, whereas MOD_UNLOAD should only fail if it is impossible to unload the module, for instance because there are memory references to the module which cannot be revoked. When the system is shutting down, what contains the value of MOD_SHUTDOWN. The module should return EOPNOTSUPP for unsupported and unrecognized values of what. EXAMPLES
#include <sys/param.h> #include <sys/kernel.h> #include <sys/module.h> static int foo_handler(module_t mod, int /*modeventtype_t*/ what, void *arg); static moduledata_t mod_data= { "foo", foo_handler, 0 }; MODULE_VERSION(foo, 1); MODULE_DEPEND(foo, bar, 1, 3, 4); DECLARE_MODULE(foo, mod_data, SI_SUB_EXEC, SI_ORDER_ANY); SEE ALSO
DECLARE_MODULE(9), DEV_MODULE(9), DRIVER_MODULE(9), MODULE_DEPEND(9), MODULE_VERSION(9), SYSCALL_MODULE(9) /usr/share/examples/kld AUTHORS
This manual page was written by Alexander Langer <alex@FreeBSD.org>. BSD
July 19, 2007 BSD
Man Page