Module Name: src
Committed By: pgoyette
Date: Sun Jun 3 01:50:28 UTC 2018
Modified Files:
src/share/man/man9: module.9
Log Message:
Add documentation on the module_{,un}register_callbacks() routines.
XXX Still need to document the module_specificdata_* stuff, which
XXX needs to refer to a non-existent specificdata(9) man page!
To generate a diff of this commit:
cvs rdiff -u -r1.43 -r1.44 src/share/man/man9/module.9
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/share/man/man9/module.9
diff -u src/share/man/man9/module.9:1.43 src/share/man/man9/module.9:1.44
--- src/share/man/man9/module.9:1.43 Mon May 28 22:22:54 2018
+++ src/share/man/man9/module.9 Sun Jun 3 01:50:28 2018
@@ -1,4 +1,4 @@
-.\" $NetBSD: module.9,v 1.43 2018/05/28 22:22:54 pgoyette Exp $
+.\" $NetBSD: module.9,v 1.44 2018/06/03 01:50:28 pgoyette Exp $
.\"
.\" Copyright (c) 2010 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -27,7 +27,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd May 29, 2018
+.Dd June 3, 2018
.Dt MODULE 9
.Os
.Sh NAME
@@ -75,6 +75,11 @@
.Fn module_builtin_require_force "void"
.Ft void
.Fn module_load_vfs_init "void"
+.Ft "void *"
+.Fn module_register_callbacks "void (*)(struct module *)" \
+"void (*unload)(struct module *)"
+.Ft void
+.Fn module_unregister_callbacks "void *"
.Sh DESCRIPTION
Modules are sections of code that can be independently linked and selectively
loaded into or unloaded from a running kernel.
@@ -443,14 +448,35 @@ is specified.
is called near the end of system initialization, after the
.Xr init 8
process is created.
-.It Fn module_load_vfs_init
+.It Fn module_load_vfs_init "void"
The module subsystem is initialized early, long before any file systems
are available.
After the root file system is mounted,
-.Fn module_load_vfs_init
+.Fn module_load_vfs_init "void"
is used to enable loading modules from the file system.
Until this routine is called, modules can only be loaded if they were
built-in to the kernel image or provided by the boot loader.
+.It Fn module_register_callbacks "void (*load)(struct module *)" \
+"void (*unload)(struct module *)"
+Register a new set of callbacks.
+The
+.Fa load
+callback is invoked after any module (including this module) is
+successfully loaded; the
+.Fa unload
+callback is invoked before any module is unloaded.
+Each load or unload event can result in multiple invocations of the
+callback routines.
+An opaque cookie is returned which can be passed to
+.Fn module_unregister_callbacks .
+.It Fn module_unregister_callbacks "void *opaque"
+Unregister a set of callback routines previously registered with
+.Fn module_register_callbacks .
+The
+.Fa opaque
+argument should be the return value from the previous
+.Fn module_register_callbacks
+call.
.El
.Sh PROGRAMMING CONSIDERATIONS
The module subsystem is designed to be called recursively, but only within