summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_bus.c
diff options
context:
space:
mode:
authorn_hibma <n_hibma@FreeBSD.org>1999-08-16 21:44:14 +0000
committern_hibma <n_hibma@FreeBSD.org>1999-08-16 21:44:14 +0000
commit439729e89157e94894d0b43438f8010101b8762a (patch)
tree3a33335f3883387db413bb9237a3077320b3fba6 /sys/kern/subr_bus.c
parent4c4eda22a470149d8f718b48e741738f8c666e1f (diff)
downloadFreeBSD-src-439729e89157e94894d0b43438f8010101b8762a.zip
FreeBSD-src-439729e89157e94894d0b43438f8010101b8762a.tar.gz
Change calling of chained event handler from always after
the attach/detach to 1) MOD_LOAD before attach 2) MOD_UNLOAD after detach The driver specific event handler can now be used to function as driver specific init/deinit function (compare to device specific init/deinit functions: attach & detach).
Diffstat (limited to 'sys/kern/subr_bus.c')
-rw-r--r--sys/kern/subr_bus.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c
index f174d20..27e280e 100644
--- a/sys/kern/subr_bus.c
+++ b/sys/kern/subr_bus.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: subr_bus.c,v 1.37 1999/08/14 13:20:04 n_hibma Exp $
+ * $Id: subr_bus.c,v 1.38 1999/08/14 13:32:25 n_hibma Exp $
*/
#include <sys/param.h>
@@ -2142,6 +2142,9 @@ driver_module_handler(module_t mod, int what, void *arg)
switch (what) {
case MOD_LOAD:
+ if (dmd->dmd_chainevh)
+ error = dmd->dmd_chainevh(mod,what,dmd->dmd_chainarg);
+
for (i = 0; !error && i < dmd->dmd_ndrivers; i++) {
PDEBUG(("Loading module: driver %s on bus %s",
DRIVERNAME(dmd->dmd_drivers[i]),
@@ -2169,11 +2172,12 @@ driver_module_handler(module_t mod, int what, void *arg)
error = devclass_delete_driver(bus_devclass,
dmd->dmd_drivers[i]);
}
+
+ if (!error && dmd->dmd_chainevh)
+ error = dmd->dmd_chainevh(mod,what,dmd->dmd_chainarg);
break;
}
- if (!error && dmd->dmd_chainevh)
- error = dmd->dmd_chainevh(mod, what, dmd->dmd_chainarg);
return (error);
}
OpenPOWER on IntegriCloud