PERFORCE change 99099 for review

John Birrell jb at FreeBSD.org
Tue Jun 13 00:50:26 UTC 2006


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

Change 99099 by jb at jb_freebsd2 on 2006/06/13 00:47:28

	Add hooks for DTrace to register a function to be called when
	the scheduler chooses a new thread to run. This is required for
	DTrace vtime.

Affected files ...

.. //depot/projects/dtrace/src/sys/kern/kern_switch.c#3 edit
.. //depot/projects/dtrace/src/sys/sys/proc.h#6 edit

Differences ...

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

@@ -88,6 +88,7 @@
 #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
@@ -126,6 +127,11 @@
 
 #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/sys/proc.h#6 (text+ko) ====

@@ -484,7 +484,17 @@
 #define	TD_CLR_SUSPENDED(td)	TD_CLR_INHIB((td), TDI_SUSPENDED)
 #define	TD_CLR_IWAIT(td)	TD_CLR_INHIB((td), TDI_IWAIT)
 
+#ifdef KDTRACE
+typedef	void (*dtrace_vtime_switch_func_t)(struct thread *);
+
+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
 #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