diff options
author | markj <markj@FreeBSD.org> | 2013-08-24 21:13:38 +0000 |
---|---|---|
committer | markj <markj@FreeBSD.org> | 2013-08-24 21:13:38 +0000 |
commit | 3541d8b1434b233c6420ff91d742fe8b8c53a2e1 (patch) | |
tree | ef10dca68a0c1d91a3cc018d4f95de74d267c03f /sys/sys/eventhandler.h | |
parent | 6ad648e223be6153dd1674649bfc08d9733aa04a (diff) | |
download | FreeBSD-src-3541d8b1434b233c6420ff91d742fe8b8c53a2e1.zip FreeBSD-src-3541d8b1434b233c6420ff91d742fe8b8c53a2e1.tar.gz |
Rename the kld_unload event handler to kld_unload_try, and add a new
kld_unload event handler which gets invoked after a linker file has been
successfully unloaded. The kld_unload and kld_load event handlers are now
invoked with the shared linker lock held, while kld_unload_try is invoked
with the lock exclusively held.
Convert hwpmc(4) to use these event handlers instead of having
kern_kldload() and kern_kldunload() invoke hwpmc(4) hooks whenever files are
loaded or unloaded. This has no functional effect, but simplifes the linker
code somewhat.
Reviewed by: jhb
Diffstat (limited to 'sys/sys/eventhandler.h')
-rw-r--r-- | sys/sys/eventhandler.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/sys/eventhandler.h b/sys/sys/eventhandler.h index a1f9c55..f1d06b5 100644 --- a/sys/sys/eventhandler.h +++ b/sys/sys/eventhandler.h @@ -269,8 +269,10 @@ EVENTHANDLER_DECLARE(maxsockets_change, uma_zone_chfn); /* Kernel linker file load and unload events */ struct linker_file; typedef void (*kld_load_fn)(void *, struct linker_file *); -typedef void (*kld_unload_fn)(void *, struct linker_file *, int *); +typedef void (*kld_unload_fn)(void *, const char *, caddr_t, size_t); +typedef void (*kld_unload_try_fn)(void *, struct linker_file *, int *); EVENTHANDLER_DECLARE(kld_load, kld_load_fn); EVENTHANDLER_DECLARE(kld_unload, kld_unload_fn); +EVENTHANDLER_DECLARE(kld_unload_try, kld_unload_try_fn); #endif /* SYS_EVENTHANDLER_H */ |