#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_MODULE9,
DEV_MODULE9
and
SYSCALL_MODULE9.
Of course, it can also be called directly, for example in
order to implement dynamic sysctls.
The arguments it expects are:
Fa name
The module name, which will be used in the
SYSINIT ();
call to identify the module.
Fa data
A
Vt moduledata_t
structure, which contains two main items, the official name of the
module name, which will be used in the
Vt module_t
structure and a pointer to the event handler function of type
Vt modeventhand_t .
Fa sub
An argument directed to the
SYSINIT ();
macro.
Valid values for this are contained in the
Vt sysinit_sub_id
enumeration
(see
In sys/kernel.h )
and specify the type of system startup interfaces.
The
DRIVER_MODULE9
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.
Fa order
An argument for
SYSINIT (.);
It represents the KLDs order of initialization within the subsystem.
Valid values are defined in the
Vt sysinit_elem_order
enumeration
(In sys/kernel.h
)
An -nosplit
This manual page was written by
An Alexander Langer Aq alex@FreeBSD.org ,
inspired by the KLD Facility Programming Tutorial by
An Andrew Reiter Aq arr@watson.org .