Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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://www.freebsd.org/cgi/man.cgi?query=module&sektion=9&manpath=FreeBSD+7.2-RELEASE>

home | help