FreeBSD Manual Pages
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 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 cannot be re- voked. When the system is shutting down, what contains the value of MOD_SHUTDOWN. The module should return EOPNOTSUPP for unsupported and unrecognized val- ues 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
NAME | DESCRIPTION | EXAMPLES | SEE ALSO | AUTHORS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=module&sektion=9&manpath=FreeBSD+9.3-RELEASE>