module(9)
NAME
module - structure describing a kernel module
DESCRIPTION
- Each module in the kernel is described by a module_t struc
- ture. The
structure contains the name of the device, a unique ID num - ber, 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 happening.
- 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 can - not be
revoked. - When the system is shutting down, what contains the value of
MOD_SHUTDOWN. - The module should return EOPNOTSUPP for 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, - };
- 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), MOD
- ULE_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 March 1, 2001