driver(9) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

driver(9)

#include    <sys/param.h>    #include   <sys/kernel.h>   #include
<sys/bus.h> #include <sys/module.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 device_method_t foo_methods[] = {         /* Methods  from
the      device      interface      */              DEVMETHOD(de‐
vice_probe,         foo_probe),              DEVMETHOD(device_at‐
tach,        foo_attach),                    DEVMETHOD(device_de‐
tach,        foo_detach),

        /*  Methods  from  the  bogo  interface  */           DE‐
VMETHOD(bogo_frob,            foo_frob),                      DE‐
VMETHOD(bogo_twiddle,         foo_twiddle),

        /* Terminate method list */         DEVMETHOD_END };

static driver_t foo_driver = {          "foo",          foo_meth‐
ods,         sizeof(struct foo_softc) };

static devclass_t foo_devclass;

DRIVER_MODULE(foo,  bogo,  foo_driver, foo_devclass, NULL, NULL);
Each driver in the kernel  is  described  by  a  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 im‐
plements  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  ficti‐
tious  "bogo"  interface.   When  a driver is registered with the
system (by the macro, see it is added to the list of drivers con‐
tained 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
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.  This manual page was written by























맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3