Document DRIVER_MODULE_ORDERED(9)
authorFrançois Tigeot <ftigeot@wolfpond.org>
Mon, 22 Jul 2013 15:47:50 +0000 (17:47 +0200)
committerFrançois Tigeot <ftigeot@wolfpond.org>
Mon, 22 Jul 2013 16:51:42 +0000 (18:51 +0200)
share/man/man9/DRIVER_MODULE.9
share/man/man9/Makefile

index 8129f07..f00db62 100644 (file)
 .\"
 .\" $FreeBSD: src/share/man/man9/DRIVER_MODULE.9,v 1.1.2.5 2001/12/17 11:30:18 ru Exp $
 .\"
-.Dd May 16, 2000
+.Dd August 21, 2012
 .Dt DRIVER_MODULE 9
 .Os
 .Sh NAME
-.Nm DRIVER_MODULE
+.Nm DRIVER_MODULE ,
+.Nm DRIVER_MODULE_ORDERED
 .Nd kernel driver declaration macro
 .Sh SYNOPSIS
 .In sys/types.h
 .In sys/bus.h
 .In sys/module.h
 .Fn DRIVER_MODULE name busname "driver_t driver" "devclass_t devclass" "modeventhand_t evh" "void *arg"
+.Fn DRIVER_MODULE_ORDERED name busname "driver_t driver" "devclass_t devclass" "modeventhand_t evh" "void *arg" "int order"
 .Sh DESCRIPTION
 The
 .Fn DRIVER_MODULE
@@ -92,10 +94,28 @@ The
 is unused at this time and should be a
 .Dv NULL
 pointer.
+.Pp
+The
+.Fn DRIVER_MODULE_ORDERED
+macro allows a driver to be registered in a specific order.
+This can be useful if a single kernel module contains multiple drivers
+that are inter-dependent.
+The
+.Fa order
+argument should be one of the
+.Xr SYSINIT 9
+initialization ordering constants
+.Pq Dv SI_ORDER_* .
+The default order for a driver module is
+.Dv SI_ORDER_MIDDLE .
+Typically a module will specify an order of
+.Dv SI_ORDER_ANY
+for a single driver to ensure it is registered last.
 .Sh SEE ALSO
 .Xr device 9 ,
 .Xr driver 9 ,
-.Xr module 9
+.Xr module 9 ,
+.Xr SYSINIT 9
 .Sh AUTHORS
 This manual page was written by
 .An Alexander Langer Aq Mt alex@FreeBSD.org .
index a206a86..6115bed 100644 (file)
@@ -448,6 +448,7 @@ MLINKS+=dsched.9 dsched_cancel_bio.9 \
        dsched.9 DSCHED_THREAD_IO_UNLOCK.9 \
        dsched.9 dsched_thread_io_unref.9 \
        dsched.9 dsched_unregister.9
+MLINKS+=DRIVER_MODULE.9 DRIVER_MODULE_ORDERED.9
 MLINKS+=EVENTHANDLER.9 EVENTHANDLER_DECLARE.9 \
        EVENTHANDLER.9 EVENTHANDLER_DEREGISTER.9 \
        EVENTHANDLER.9 eventhandler_deregister.9 \