diff options
author | dfr <dfr@FreeBSD.org> | 1998-09-03 21:52:05 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 1998-09-03 21:52:05 +0000 |
commit | cd489c519a109c93001769e1008a8a567608e6b8 (patch) | |
tree | 7dd9657b041b5806f628d67e082665accc0027d8 /share/man/man9/driver.9 | |
parent | 243726c1b8c1d3ac7eda2073abcc9375d40b20c1 (diff) | |
download | FreeBSD-src-cd489c519a109c93001769e1008a8a567608e6b8.zip FreeBSD-src-cd489c519a109c93001769e1008a8a567608e6b8.tar.gz |
Add manpages for the new device framework.
Diffstat (limited to 'share/man/man9/driver.9')
-rw-r--r-- | share/man/man9/driver.9 | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/share/man/man9/driver.9 b/share/man/man9/driver.9 new file mode 100644 index 0000000..e8c70ef --- /dev/null +++ b/share/man/man9/driver.9 @@ -0,0 +1,103 @@ +.\" -*- nroff -*- +.\" +.\" Copyright (c) 1998 Doug Rabson +.\" +.\" All rights reserved. +.\" +.\" This program is free software. +.\" +.\" 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. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``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 DEVELOPERS 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 June 16, 1998 +.Dt driver 9 +.Os FreeBSD +.Sh NAME +.Nm driver +.Nd structure describing a device driver +.Sh SYNOPSIS +.Bd -literal +#include <sys/param.h> +#include <sys/bus.h> + +static int foo_probe(device_t); +static int foo_attach(device_t); +static int foo_detach(device_t); +static int foo_frob(device_t, int, int); +static int foo_twiddle(device_t, char *); + +static struct device_method foo_methods[] = { + /* Methods from the device interface */ + DEVMETHOD(device_probe, foo_probe), + DEVMETHOD(device_attach, foo_attach), + DEVMETHOD(device_detach, foo_detach), + + /* Methods from the bogo interface */ + DEVMETHOD(bogo_frob, foo_frob), + DEVMETHOD(bogo_twiddle, foo_twiddle), + + /* Terminate method list */ + { 0, 0 } +}; + +static driver_t foo_driver { + "foo", + foo_methods, + DRIVER_TYPE_MISC, + sizeof(struct foo_softc), +}; + +static devclass_t foo_devclass; + +DRIVER_MODULE(foo, bogo, foo_driver, foo_devclass, 0, 0); +.Ed +.Sh DESCRIPTION +Each driver in the kernel is described by a +.Dv driver_t +structure. The structure contains the name of the device, a pointer +to a list of methods, an indication of the kind of device which the +driver implements and the size of the private data which the driver +needs to associate with a device instance. Each driver will implement +one or more sets of methods (called interfaces). The example driver +implements the standard "driver" interface and the fictitious "bogo" +interface. +.Pp +When a driver is registered with the system (by the +.Dv DRIVER_MODULE +macro), it is added to the list of drivers contained in the devclass +of its parent bus type. For instance all PCI drivers would be +contained in the devclass named "pci" and all ISA drivers would be +in the devclass named "isa". +The reason the drivers are not held in the device object of the parent +bus is to handle multiple instances of a given type of bus. +The +.Dv DRIVER_MODULE +macro will also create the devclass with the name of the driver and +can optionally call extra initialisation code in the driver by +specifying an extra module event handler and argument as the last two +arguments. +.Sh SEE ALSO +.Xr device 9 , +.Xr devclass 9 +.Sh AUTHORS +This man page was written by +.An Doug Rabson . |