summaryrefslogtreecommitdiffstats
path: root/sys/dev/digi
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2004-07-13 19:36:59 +0000
committerphk <phk@FreeBSD.org>2004-07-13 19:36:59 +0000
commitb0e68741889ab66096103a2dec2219bbde3c21c6 (patch)
treed2eb15e6477b3d5e7e1f7c49c1e2eed3b85ec318 /sys/dev/digi
parent7b891087ed78b2c7943c2503f0bfdd7678a6d65c (diff)
downloadFreeBSD-src-b0e68741889ab66096103a2dec2219bbde3c21c6.zip
FreeBSD-src-b0e68741889ab66096103a2dec2219bbde3c21c6.tar.gz
Give kldunload a -f(orce) argument.
Add a MOD_QUIESCE event for modules. This should return error (EBUSY) of the module is in use. MOD_UNLOAD should now only fail if it is impossible (as opposed to inconvenient) to unload the module. Valid reasons are memory references into the module which cannot be tracked down and eliminated. When kldunloading, we abandon if MOD_UNLOAD fails, and if -force is not given, MOD_QUIESCE failing will also prevent the unload. For backwards compatibility, we treat EOPNOTSUPP from MOD_QUIESCE as success. Document that modules should return EOPNOTSUPP for unknown events.
Diffstat (limited to 'sys/dev/digi')
-rw-r--r--sys/dev/digi/digi.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/digi/digi.c b/sys/dev/digi/digi.c
index 68081d5..b08cd58 100644
--- a/sys/dev/digi/digi.c
+++ b/sys/dev/digi/digi.c
@@ -1042,7 +1042,7 @@ digi_loadmoduledata(struct digi_softc *sc)
if (digi_mod->dm_version != DIGI_MOD_VERSION) {
printf("digi_%s.ko: Invalid version %d (need %d)\n",
sc->module, digi_mod->dm_version, DIGI_MOD_VERSION);
- linker_file_unload(lf);
+ linker_file_unload(lf, LINKER_UNLOAD_FORCE);
return (EINVAL);
}
@@ -1064,7 +1064,7 @@ digi_loadmoduledata(struct digi_softc *sc)
bcopy(digi_mod->dm_link.data, sc->link.data, sc->link.size);
}
- linker_file_unload(lf);
+ linker_file_unload(lf, LINKER_UNLOAD_FORCE);
return (0);
}
OpenPOWER on IntegriCloud