File:  [DragonFly] / src / share / man / man9 / DRIVER_MODULE.9
Revision 1.2: download - view: text, annotated - select for diffs
Tue Jun 17 04:37:01 2003 UTC (11 years, 6 months ago) by dillon
Branches: MAIN
CVS tags: HEAD
Add the DragonFly cvs id and perform general cleanups on cvs/rcs/sccs ids.  Most
ids have been removed from !lint sections and moved into comment sections.

    1: .\" -*- nroff -*-
    2: .\"
    3: .\" Copyright (c) 2000 Alexander Langer
    4: .\"
    5: .\" All rights reserved.
    6: .\"
    7: .\" This program is free software.
    8: .\"
    9: .\" Redistribution and use in source and binary forms, with or without
   10: .\" modification, are permitted provided that the following conditions
   11: .\" are met:
   12: .\" 1. Redistributions of source code must retain the above copyright
   13: .\"    notice, this list of conditions and the following disclaimer.
   14: .\" 2. Redistributions in binary form must reproduce the above copyright
   15: .\"    notice, this list of conditions and the following disclaimer in the
   16: .\"    documentation and/or other materials provided with the distribution.
   17: .\"
   18: .\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
   19: .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   20: .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   21: .\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
   22: .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   23: .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   24: .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   25: .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   26: .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   27: .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   28: .\"
   29: .\" $FreeBSD: src/share/man/man9/DRIVER_MODULE.9,v 1.1.2.5 2001/12/17 11:30:18 ru Exp $
   30: .\" $DragonFly: src/share/man/man9/DRIVER_MODULE.9,v 1.2 2003/06/17 04:37:01 dillon Exp $
   31: .\"
   32: .Dd May 16, 2000
   33: .Dt DRIVER_MODULE 9
   34: .Os
   35: .Sh NAME
   36: .Nm DRIVER_MODULE
   37: .Nd kernel driver declaration macro
   38: .Sh SYNOPSIS
   39: .In sys/types.h
   40: .In sys/bus.h
   41: .In sys/module.h
   42: .Fn DRIVER_MODULE name busname "driver_t driver" "devclass_t devclass" "modeventhand_t evh" "void *arg"
   43: .Fn MULTI_DRIVER_MODULE name busname "driver_t drivers[]" "devclass_t devclass" "modeventhand_t evh" "void *arg"
   44: .Sh DESCRIPTION
   45: The
   46: .Fn DRIVER_MODULE
   47: macro declares a kernel driver.
   48: .Fn DRIVER_MODULE
   49: expands to the real driver declaration, where the phrase
   50: .Fa name
   51: is used as the naming prefix for the driver and its functions.
   52: Note that it is supplied as plain text, and not a
   53: .Li char
   54: or
   55: .Li char * .
   56: .Pp
   57: .Fa busname
   58: is the parent bus of the driver (PCI, ISA, PPBUS and others), e.g.\&
   59: .Ql pci ,
   60: .Ql isa ,
   61: or
   62: .Ql ppbus .
   63: .Pp
   64: The identifier used in
   65: .Fn DRIVER_MODULE
   66: can be different from the driver name.
   67: Also, the same driver identifier can exist on different busses,
   68: which is a pretty clean way of making front ends for different cards
   69: using the same driver on the same or different busses.
   70: For example, the following is allowed:
   71: .Pp
   72: .Fn DRIVER_MODULE foo isa foo_driver foo_devclass NULL NULL ;
   73: .Pp
   74: .Fn DRIVER_MODULE foo pci foo_driver foo_devclass NULL NULL ;
   75: .Pp
   76: .Fa driver
   77: is the driver of type
   78: .Li driver_t ,
   79: which contains the information about the driver and is therefore one of the
   80: two most important parts of the call to
   81: .Fn DRIVER_MODULE .
   82: .Pp
   83: The
   84: .Fa devclass
   85: argument contains the kernel-internal information about the device,
   86: which will be used within the kernel driver module.
   87: .Pp
   88: The
   89: .Fa evh
   90: argument is the event handler which is called when the driver (or module)
   91: is loaded or unloaded (see
   92: .Xr module 9 ) .
   93: .Pp
   94: The
   95: .Fa arg
   96: is unused at this time and should be a
   97: .Dv NULL
   98: pointer.
   99: .Pp
  100: .Fn MULTI_DRIVER_MODULE
  101: is a special version of
  102: .Fn DRIVER_MODULE ,
  103: which takes a list of drivers instead of a single driver instance.
  104: .Sh SEE ALSO
  105: .Xr device 9 ,
  106: .Xr driver 9 ,
  107: .Xr module 9
  108: .Sh AUTHORS
  109: This manual page was written by
  110: .An Alexander Langer Aq alex@FreeBSD.org .