diff options
author | ghelmer <ghelmer@FreeBSD.org> | 1999-04-13 13:23:11 +0000 |
---|---|---|
committer | ghelmer <ghelmer@FreeBSD.org> | 1999-04-13 13:23:11 +0000 |
commit | 95c59dd11fcb828634def8b75b7f8b986d2e5673 (patch) | |
tree | b2faa770700e097db84494e6ae7bacc2dbc788e0 | |
parent | fd7050b5fd5d9dc03a935edecb93ea20f9559f0b (diff) | |
download | FreeBSD-src-95c59dd11fcb828634def8b75b7f8b986d2e5673.zip FreeBSD-src-95c59dd11fcb828634def8b75b7f8b986d2e5673.tar.gz |
Add kld(4) man page. Copyright notice in PR submission was "???", which
I changed to "Christopher G. Demetriou" since the page appears to be a
revision of lkm(4).
PR: docs/8611
Submitted by: Rajesh Vaidheeswarran <rv@fore.com>
-rw-r--r-- | share/man/man4/kld.4 | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/share/man/man4/kld.4 b/share/man/man4/kld.4 new file mode 100644 index 0000000..f275b16 --- /dev/null +++ b/share/man/man4/kld.4 @@ -0,0 +1,162 @@ +.\" Copyright (c) 1993 Christopher G. Demetriou +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. The name of the author may not be used to endorse or promote products +.\" derived from this software without specific prior written permission +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.\" $Id$ +.\" +.Dd November 08, 1998 +.Dt KLD 4 +.\".Os FreeBSD 3.0 +.Sh NAME +.Nm kld +.Nd dynamic kernel linker facility +.Sh DESCRIPTION +The LKM (Loadable Kernel Modules) facility has been deprecated in FreeBSD +3.0 and above in favor of the +.Nm +interface. This interface, like its +predecessor, allows the system administrator to dynamically add and remove +functionality from a running system. This ability also helps software +developers to develop new parts of the kernel without constantly rebooting +to test their changes. +.Pp +Various types of modules can be loaded into the system. +There are several defined module types, listed below, which can +be added to the system in a predefined way. In addition, there +is a generic type, for which the module itself handles loading and +unloading. +.Pp +The +.Tn FreeBSD +system makes extensive use of loadable kernel modules, and provides loadable +versions of most filesystems, the +.Tn NFS +client and server, all the screen-savers, and the +.Tn iBCS2 +and +.Tn Linux +emulators. +.Nm +modules are placed by default in the +.Pa /modules +directory. +.Pp +The +.Nm +interface is used through the +.Xr kldload 8 , +.Xr kldunload 8 +and +.Xr kldstat 8 +programs. +.Pp +The +.Xr kldload 8 +program can load either +.Xr a.out 5 +or ELF formatted loadable modules. +The +.Xr kldunload 8 +program unloads any given loaded module, if no other module is dependent +upon the given module. +The +.Xr kldstat 8 +program is used to check the status of the modules currently loaded into the +system. +.Sh "MODULE TYPES" +.Bl -ohang +.It Em "Device Driver modules" +New block and character device +drivers may be loaded into the system with +.Nm KLD . +The major problem with loading +a device driver is that the driver's +device nodes must be exist for the +devices to be accessed. They are usually +created by using +.Xr MAKEDEV 8 +or +.Xr mknod 8 +(if the device is not supported by the +.Xr MAKEDEV 8 +script) or, by writing a +shell script to run +.Xr kldload 8 +which should run the appropriate program to create the devices when the +driver has been successfully loaded. +.El +.Sh FILES +.Bl -tag -width /usr/include/sys/module.h -compact +.It Pa /modules +directory containing module binaries shipped with the system +.It Pa /usr/include/sys/module.h +file containing definitions required to compile a +.Nm +module +.It Pa /usr/share/examples/kld +example source code implementing a sample kld module +.Sh SEE ALSO +.Xr kldload 8 , +.Xr kldstat 8 , +.Xr kldunload 8 +.Sh BUGS +If a module B, is dependent on another module A, but is not compiled with +module A as a dependency, then +.Xr kldload 8 +fails to load module B, even if module A is already present in the system. +.Pp +If multiple modules are dependent on module A, and are compiled with module +A as a dependency, then +.Xr kldload 8 +loads an instance of module A when any of the modules are loaded. +.Pp +If a custom entry point is used for a module, and the module is compiled as +an +.Sq ELF +binary, then +.Xr kldload 8 +fails to execute the entry point. +.Pp +.Xr kldload 8 +returns the cryptic message +.Sq ENOEXEC Po Exec format error Pc +for any error encountered while loading a module. +.Pp +When system internal interfaces change, old modules often cannot +detect this, and such modules when loaded will often cause crashes or +mysterious failures. +.Sh AUTHORS +The +.Nm +facility was originally implemented by +.An Doug Rabson Aq dfr@FreeBSD.org . +.Sh HISTORY +The +.Nm +facility appeared in FreeBSD 3.0 and was designed as a replacement for the +.Xr lkm 4 +facility, which was similar in functionality to the loadable kernel modules +facility provided by +.Tn SunOS +4.1.3. |