Module Name:    src
Committed By:   darran
Date:           Tue Feb 23 22:19:27 UTC 2010

Modified Files:
        src/sys/kern: kern_dtrace.c kern_lwp.c kern_proc.c kern_synch.c
        src/sys/sys: dtrace_bsd.h

Log Message:
DTrace: Get rid of the KDTRACE_HOOKS ifdefs in the kernel.  Replace the
functions with inline function that are empty when KDTRACE_HOOKS is not
defined.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/kern/kern_dtrace.c
cvs rdiff -u -r1.139 -r1.140 src/sys/kern/kern_lwp.c
cvs rdiff -u -r1.161 -r1.162 src/sys/kern/kern_proc.c
cvs rdiff -u -r1.278 -r1.279 src/sys/kern/kern_synch.c
cvs rdiff -u -r1.1 -r1.2 src/sys/sys/dtrace_bsd.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/kern_dtrace.c
diff -u src/sys/kern/kern_dtrace.c:1.1 src/sys/kern/kern_dtrace.c:1.2
--- src/sys/kern/kern_dtrace.c:1.1	Sun Feb 21 07:28:51 2010
+++ src/sys/kern/kern_dtrace.c	Tue Feb 23 22:19:27 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_dtrace.c,v 1.1 2010/02/21 07:28:51 darran Exp $	*/
+/*	$NetBSD: kern_dtrace.c,v 1.2 2010/02/23 22:19:27 darran Exp $	*/
 
 /*-
  * Copyright (c) 2007-2008 John Birrell <j...@freebsd.org>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_dtrace.c,v 1.1 2010/02/21 07:28:51 darran Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_dtrace.c,v 1.2 2010/02/23 22:19:27 darran Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -37,11 +37,6 @@
 #include <sys/proc.h>
 #include <sys/dtrace_bsd.h>
 
-#define KDTRACE_PROC_SIZE	64
-#define KDTRACE_PROC_ZERO	8
-#define	KDTRACE_THREAD_SIZE	256
-#define	KDTRACE_THREAD_ZERO	64
-
 /* Return the DTrace process data size compiled in the kernel hooks. */
 size_t
 kdtrace_proc_size()
@@ -50,24 +45,6 @@
 	return(KDTRACE_PROC_SIZE);
 }
 
-void
-kdtrace_proc_ctor(void *arg, struct proc *p)
-{
-
-	p->p_dtrace = kmem_alloc(KDTRACE_PROC_SIZE, KM_SLEEP);
-	memset(p->p_dtrace, 0, KDTRACE_PROC_ZERO);
-}
-
-void
-kdtrace_proc_dtor(void *arg, struct proc *p)
-{
-
-	if (p->p_dtrace != NULL) {
-		kmem_free(p->p_dtrace, KDTRACE_PROC_SIZE);
-		p->p_dtrace = NULL;
-	}
-}
-
 /* Return the DTrace thread data size compiled in the kernel hooks. */
 size_t
 kdtrace_thread_size()
@@ -75,21 +52,3 @@
 
 	return(KDTRACE_THREAD_SIZE);
 }
-
-void
-kdtrace_thread_ctor(void *arg, struct lwp *l)
-{
-
-	l->l_dtrace = kmem_alloc(KDTRACE_THREAD_SIZE, KM_SLEEP);
-	memset(l->l_dtrace, 0, KDTRACE_THREAD_ZERO);
-}
-
-void
-kdtrace_thread_dtor(void *arg, struct lwp *l)
-{
-
-	if (l->l_dtrace != NULL) {
-		kmem_free(l->l_dtrace, KDTRACE_THREAD_SIZE);
-		l->l_dtrace = NULL;
-	}
-}

Index: src/sys/kern/kern_lwp.c
diff -u src/sys/kern/kern_lwp.c:1.139 src/sys/kern/kern_lwp.c:1.140
--- src/sys/kern/kern_lwp.c:1.139	Sun Feb 21 07:01:57 2010
+++ src/sys/kern/kern_lwp.c	Tue Feb 23 22:19:27 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_lwp.c,v 1.139 2010/02/21 07:01:57 darran Exp $	*/
+/*	$NetBSD: kern_lwp.c,v 1.140 2010/02/23 22:19:27 darran Exp $	*/
 
 /*-
  * Copyright (c) 2001, 2006, 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -209,7 +209,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_lwp.c,v 1.139 2010/02/21 07:01:57 darran Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_lwp.c,v 1.140 2010/02/23 22:19:27 darran Exp $");
 
 #include "opt_ddb.h"
 #include "opt_lockdebug.h"
@@ -236,10 +236,7 @@
 #include <sys/lwpctl.h>
 #include <sys/atomic.h>
 #include <sys/filedesc.h>
-
-#ifdef KDTRACE_HOOKS
 #include <sys/dtrace_bsd.h>
-#endif
 
 #include <uvm/uvm_extern.h>
 #include <uvm/uvm_object.h>
@@ -625,9 +622,7 @@
 	l2->l_cpu = l1->l_cpu;
 	kpreempt_enable();
 
-#ifdef KDTRACE_HOOKS
 	kdtrace_thread_ctor(NULL, l2);
-#endif
 	lwp_initspecific(l2);
 	sched_lwp_fork(l1, l2);
 	lwp_update_creds(l2);
@@ -964,9 +959,7 @@
 
 	KASSERT(SLIST_EMPTY(&l->l_pi_lenders));
 	KASSERT(l->l_inheritedprio == -1);
-#ifdef KDTRACE_HOOKS
 	kdtrace_thread_dtor(NULL, l);
-#endif
 	if (!recycle)
 		pool_cache_put(lwp_cache, l);
 }

Index: src/sys/kern/kern_proc.c
diff -u src/sys/kern/kern_proc.c:1.161 src/sys/kern/kern_proc.c:1.162
--- src/sys/kern/kern_proc.c:1.161	Sun Feb 21 07:01:57 2010
+++ src/sys/kern/kern_proc.c	Tue Feb 23 22:19:27 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_proc.c,v 1.161 2010/02/21 07:01:57 darran Exp $	*/
+/*	$NetBSD: kern_proc.c,v 1.162 2010/02/23 22:19:27 darran Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.161 2010/02/21 07:01:57 darran Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.162 2010/02/23 22:19:27 darran Exp $");
 
 #include "opt_kstack.h"
 #include "opt_maxuprc.h"
@@ -94,10 +94,7 @@
 #include <sys/sleepq.h>
 #include <sys/atomic.h>
 #include <sys/kmem.h>
-
-#ifdef KDTRACE_HOOKS
 #include <sys/dtrace_bsd.h>
-#endif
 
 #include <uvm/uvm.h>
 #include <uvm/uvm_extern.h>
@@ -447,9 +444,7 @@
 	mutex_init(&p->p_sigacts->sa_mutex, MUTEX_DEFAULT, IPL_SCHED);
 	siginit(p);
 
-#ifdef KDTRACE_HOOKS
 	kdtrace_proc_ctor(NULL, p);
-#endif
 
 	proc_initspecific(p);
 	lwp_initspecific(l);
@@ -719,9 +714,7 @@
 	pt->pt_proc = p;
 	pid_alloc_cnt++;
 
-#ifdef KDTRACE_HOOKS
 	kdtrace_proc_ctor(NULL, p);
-#endif
 
 	mutex_exit(proc_lock);
 
@@ -766,9 +759,7 @@
 proc_free_mem(struct proc *p)
 {
 
-#ifdef KDTRACE_HOOKS
 	kdtrace_proc_dtor(NULL, p);
-#endif
 	pool_cache_put(proc_cache, p);
 }
 

Index: src/sys/kern/kern_synch.c
diff -u src/sys/kern/kern_synch.c:1.278 src/sys/kern/kern_synch.c:1.279
--- src/sys/kern/kern_synch.c:1.278	Sun Feb 21 07:39:18 2010
+++ src/sys/kern/kern_synch.c	Tue Feb 23 22:19:27 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_synch.c,v 1.278 2010/02/21 07:39:18 darran Exp $	*/
+/*	$NetBSD: kern_synch.c,v 1.279 2010/02/23 22:19:27 darran Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2004, 2006, 2007, 2008, 2009
@@ -69,7 +69,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_synch.c,v 1.278 2010/02/21 07:39:18 darran Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_synch.c,v 1.279 2010/02/23 22:19:27 darran Exp $");
 
 #include "opt_kstack.h"
 #include "opt_perfctrs.h"
@@ -103,11 +103,9 @@
 
 #include <dev/lockstat.h>
 
-#ifdef KDTRACE_HOOKS
 #include <sys/dtrace_bsd.h>
-int                             dtrace_vtime_active;
+int                             dtrace_vtime_active=0;
 dtrace_vtime_switch_func_t      dtrace_vtime_switch_func;
-#endif
 
 static void	sched_unsleep(struct lwp *, bool);
 static void	sched_changepri(struct lwp *, pri_t);
@@ -769,7 +767,6 @@
 				SPINLOCK_BACKOFF(count);
 		}
 
-#ifdef KDTRACE_HOOKS
 		/*
 		 * If DTrace has set the active vtime enum to anything
 		 * other than INACTIVE (0), then it should have set the
@@ -778,7 +775,6 @@
 		if (__predict_false(dtrace_vtime_active)) {
 			(*dtrace_vtime_switch_func)(newl);
 		}
-#endif
 
 		/* Switch to the new LWP.. */
 		prevlwp = cpu_switchto(l, newl, returning);
@@ -921,16 +917,14 @@
 			SPINLOCK_BACKOFF(count);
 	}
 
-#ifdef KDTRACE_HOOKS
-	    /*
-	     * If DTrace has set the active vtime enum to anything
-	     * other than INACTIVE (0), then it should have set the
-	     * function to call.
-	     */
-	    if (__predict_false(dtrace_vtime_active)) {
-		    (*dtrace_vtime_switch_func)(newl);
-	    }
-#endif
+	/*
+	 * If DTrace has set the active vtime enum to anything
+	 * other than INACTIVE (0), then it should have set the
+	 * function to call.
+	 */
+	if (__predict_false(dtrace_vtime_active)) {
+		(*dtrace_vtime_switch_func)(newl);
+	}
 
 	/* Switch to the new LWP.. */
 	(void)cpu_switchto(NULL, newl, false);

Index: src/sys/sys/dtrace_bsd.h
diff -u src/sys/sys/dtrace_bsd.h:1.1 src/sys/sys/dtrace_bsd.h:1.2
--- src/sys/sys/dtrace_bsd.h:1.1	Sun Feb 21 02:11:39 2010
+++ src/sys/sys/dtrace_bsd.h	Tue Feb 23 22:19:27 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: dtrace_bsd.h,v 1.1 2010/02/21 02:11:39 darran Exp $	*/
+/*	$NetBSD: dtrace_bsd.h,v 1.2 2010/02/23 22:19:27 darran Exp $	*/
 
 /*-
  * Copyright (c) 2007-2008 John Birrell (j...@freebsd.org)
@@ -33,6 +33,15 @@
 #ifndef _SYS_DTRACE_BSD_H
 #define	_SYS_DTRACE_BSD_H
 
+#include "opt_dtrace.h"
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/malloc.h>
+#include <sys/kmem.h>
+#include <sys/proc.h>
+
 /* Forward definitions: */
 struct mbuf;
 struct trapframe;
@@ -149,22 +158,89 @@
     dtrace_nfsclient_nfs23_done_probe;
 
 /*
- * Functions which allow the dtrace module to check that the kernel 
- * hooks have been compiled with sufficient space for it's private
- * structures.
- */
-size_t	kdtrace_proc_size(void);
-void kdtrace_proc_ctor(void *, struct proc *);
-void kdtrace_proc_dtor(void *, struct proc *);
-size_t	kdtrace_thread_size(void);
-void kdtrace_thread_ctor(void *, struct lwp *);
-void kdtrace_thread_dtor(void *, struct lwp *);
-
-/*
  * OpenSolaris compatible time functions returning nanoseconds.
  * On OpenSolaris these return hrtime_t which we define as uint64_t.
  */
 uint64_t	dtrace_gethrtime(void);
 uint64_t	dtrace_gethrestime(void);
 
+/* sizes based on DTrace structure requirements */
+#define KDTRACE_PROC_SIZE	64
+#define KDTRACE_PROC_ZERO	8
+#define	KDTRACE_THREAD_SIZE	256
+#define	KDTRACE_THREAD_ZERO	64
+
+/*
+ * Functions for managing the opaque DTrace memory areas for 
+ * processes and lwps.
+ */
+
+static inline size_t	kdtrace_proc_size(void);
+static inline void kdtrace_proc_ctor(void *, struct proc *);
+static inline void kdtrace_proc_dtor(void *, struct proc *);
+static inline size_t	kdtrace_thread_size(void);
+static inline void kdtrace_thread_ctor(void *, struct lwp *);
+static inline void kdtrace_thread_dtor(void *, struct lwp *);
+
+
+/* Return the DTrace process data size compiled in the kernel hooks. */
+static inline size_t
+kdtrace_proc_size()
+{
+
+	return(KDTRACE_PROC_SIZE);
+}
+
+/* Return the DTrace thread data size compiled in the kernel hooks. */
+static inline size_t
+kdtrace_thread_size()
+{
+
+	return(KDTRACE_THREAD_SIZE);
+}
+
+static inline void
+kdtrace_proc_ctor(void *arg, struct proc *p)
+{
+
+#ifdef KDTRACE_HOOKS
+	p->p_dtrace = kmem_alloc(KDTRACE_PROC_SIZE, KM_SLEEP);
+	memset(p->p_dtrace, 0, KDTRACE_PROC_ZERO);
+#endif
+}
+
+static inline void
+kdtrace_proc_dtor(void *arg, struct proc *p)
+{
+
+#ifdef KDTRACE_HOOKS
+	if (p->p_dtrace != NULL) {
+		kmem_free(p->p_dtrace, KDTRACE_PROC_SIZE);
+		p->p_dtrace = NULL;
+	}
+#endif
+}
+
+static inline void
+kdtrace_thread_ctor(void *arg, struct lwp *l)
+{
+
+#ifdef KDTRACE_HOOKS
+	l->l_dtrace = kmem_alloc(KDTRACE_THREAD_SIZE, KM_SLEEP);
+	memset(l->l_dtrace, 0, KDTRACE_THREAD_ZERO);
+#endif
+}
+
+static inline void
+kdtrace_thread_dtor(void *arg, struct lwp *l)
+{
+
+#ifdef KDTRACE_HOOKS
+	if (l->l_dtrace != NULL) {
+		kmem_free(l->l_dtrace, KDTRACE_THREAD_SIZE);
+		l->l_dtrace = NULL;
+	}
+#endif
+}
+
 #endif /* _SYS_DTRACE_BSD_H */

Reply via email to