diff options
author | n_hibma <n_hibma@FreeBSD.org> | 1999-08-16 21:44:14 +0000 |
---|---|---|
committer | n_hibma <n_hibma@FreeBSD.org> | 1999-08-16 21:44:14 +0000 |
commit | 439729e89157e94894d0b43438f8010101b8762a (patch) | |
tree | 3a33335f3883387db413bb9237a3077320b3fba6 /sys/kern/subr_bus.c | |
parent | 4c4eda22a470149d8f718b48e741738f8c666e1f (diff) | |
download | FreeBSD-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.c | 10 |
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); } |