PERFORCE change 132128 for review
John Birrell
jb at FreeBSD.org
Sun Dec 30 13:48:08 PST 2007
http://perforce.freebsd.org/chv.cgi?CH=132128
Change 132128 by jb at jb_freebsd1 on 2007/12/30 21:47:07
Move the event handler cleanup code from modevent to here so that
the SYSUINIT drivers it.
Use FreeBSD error values rather than the DDI_FAILURE hack.
Remove some OpenSolaris-specific code.
Affected files ...
.. //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_unload.c#16 edit
Differences ...
==== //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_unload.c#16 (text+ko) ====
@@ -22,14 +22,25 @@
*
*/
-#define DDI_FAILURE EBUSY
-
static int
dtrace_unload()
{
dtrace_state_t *state;
int error = 0;
+ /*
+ * Check if there is still an event handler callback
+ * registered.
+ */
+ if (eh_tag != 0) {
+ /* De-register the device cloning event handler. */
+ EVENTHANDLER_DEREGISTER(dev_clone, eh_tag);
+ eh_tag = 0;
+
+ /* Stop device cloning. */
+ clone_cleanup(&dtrace_clones);
+ }
+
mutex_enter(&cpu_lock);
mutex_enter(&dtrace_provider_lock);
mutex_enter(&dtrace_lock);
@@ -40,14 +51,14 @@
mutex_exit(&dtrace_provider_lock);
mutex_exit(&dtrace_lock);
mutex_exit(&cpu_lock);
- return (DDI_FAILURE);
+ return (EBUSY);
}
if (dtrace_unregister((dtrace_provider_id_t)dtrace_provider) != 0) {
mutex_exit(&dtrace_provider_lock);
mutex_exit(&dtrace_lock);
mutex_exit(&cpu_lock);
- return (DDI_FAILURE);
+ return (EBUSY);
}
dtrace_provider = NULL;
@@ -120,13 +131,6 @@
dtrace_toxranges_max = 0;
}
-#ifdef DOODAD
- ddi_remove_minor_node(dtrace_devi, NULL);
- dtrace_devi = NULL;
-
- ddi_soft_state_fini(&dtrace_softstate);
-#endif
-
ASSERT(dtrace_vtime_references == 0);
ASSERT(dtrace_opens == 0);
ASSERT(dtrace_retained == NULL);
More information about the p4-projects
mailing list