PERFORCE change 99201 for review

John Birrell jb at FreeBSD.org
Wed Jun 14 06:10:44 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=99201

Change 99201 by jb at jb_freebsd2 on 2006/06/14 06:07:22

	Re-implement the DTrace vtime hook in a better place as pointer out
	by jhb at . Thanks.

Affected files ...

.. //depot/projects/dtrace/src/sys/kern/kern_switch.c#4 edit
.. //depot/projects/dtrace/src/sys/kern/kern_synch.c#4 edit
.. //depot/projects/dtrace/src/sys/kern/sched_4bsd.c#5 edit
.. //depot/projects/dtrace/src/sys/kern/sched_ule.c#3 edit
.. //depot/projects/dtrace/src/sys/sys/proc.h#7 edit

Differences ...

==== //depot/projects/dtrace/src/sys/kern/kern_switch.c#4 (text+ko) ====

@@ -88,7 +88,6 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD: src/sys/kern/kern_switch.c,v 1.121 2006/06/01 22:45:56 cognet Exp $");
 
-#include "opt_kdtrace.h"
 #include "opt_sched.h"
 
 #ifndef KERN_SWITCH_INCLUDE
@@ -127,11 +126,6 @@
 
 #define td_kse td_sched
 
-#ifdef KDTRACE
-int	dtrace_vtime_active;
-dtrace_vtime_switch_func_t	dtrace_vtime_switch_func;
-#endif
-
 /*
  * kern.sched.preemption allows user space to determine if preemption support
  * is compiled in or not.  It is not currently a boot or runtime flag that

==== //depot/projects/dtrace/src/sys/kern/kern_synch.c#4 (text+ko) ====

@@ -64,6 +64,11 @@
 
 #include <machine/cpu.h>
 
+#ifdef KDTRACE
+int	dtrace_vtime_active;
+dtrace_vtime_switch_func_t	dtrace_vtime_switch_func;
+#endif
+
 static void synch_setup(void *dummy);
 SYSINIT(synch_setup, SI_SUB_KICK_SCHEDULER, SI_ORDER_FIRST, synch_setup, NULL)
 
@@ -422,6 +427,17 @@
 		    td, td->td_proc->p_comm, td->td_priority,
 		    td->td_inhibitors, td->td_wmesg, td->td_lockname);
 #endif
+
+#ifdef KDTRACE
+	/*
+	 * If DTrace has set the active vtime enum to anything
+	 * other than INACTIVE (0), then it should have set the
+	 * function to call.
+	 */
+	if (dtrace_vtime_active)
+		(*dtrace_vtime_switch_func)(newtd);
+#endif
+
 	sched_switch(td, newtd, flags);
 	CTR3(KTR_SCHED, "mi_switch: running %p(%s) prio %d",
 	    td, td->td_proc->p_comm, td->td_priority);

==== //depot/projects/dtrace/src/sys/kern/sched_4bsd.c#5 (text+ko) ====

@@ -36,7 +36,6 @@
 __FBSDID("$FreeBSD: src/sys/kern/sched_4bsd.c,v 1.81 2006/06/06 12:26:17 davidxu Exp $");
 
 #include "opt_hwpmc_hooks.h"
-#include "opt_kdtrace.h"
 
 #define kse td_sched
 

==== //depot/projects/dtrace/src/sys/kern/sched_ule.c#3 (text+ko) ====

@@ -28,7 +28,6 @@
 __FBSDID("$FreeBSD: src/sys/kern/sched_ule.c,v 1.162 2006/06/06 12:26:17 davidxu Exp $");
 
 #include "opt_hwpmc_hooks.h"
-#include "opt_kdtrace.h"
 #include "opt_sched.h"
 
 #define kse td_sched

==== //depot/projects/dtrace/src/sys/sys/proc.h#7 (text+ko) ====

@@ -489,12 +489,8 @@
 
 extern int			dtrace_vtime_active;
 extern dtrace_vtime_switch_func_t	dtrace_vtime_switch_func;
-#define	TD_SET_RUNNING(td)	if (dtrace_vtime_active) \
-				    (*dtrace_vtime_switch_func)(td); \
-				(td)->td_state = TDS_RUNNING
-#else
+#endif
 #define	TD_SET_RUNNING(td)	(td)->td_state = TDS_RUNNING
-#endif
 #define	TD_SET_RUNQ(td)		(td)->td_state = TDS_RUNQ
 #define	TD_SET_CAN_RUN(td)	(td)->td_state = TDS_CAN_RUN
 


More information about the p4-projects mailing list