Module Name:    src
Committed By:   christos
Date:           Sat Mar  7 18:41:40 UTC 2015

Modified Files:
        src/sys/arch/amd64/amd64: linux32_syscall.c linux_syscall.c
            netbsd32_syscall.c

Log Message:
add dtrace hooks


To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/amd64/amd64/linux32_syscall.c \
    src/sys/arch/amd64/amd64/linux_syscall.c
cvs rdiff -u -r1.32 -r1.33 src/sys/arch/amd64/amd64/netbsd32_syscall.c

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

Modified files:

Index: src/sys/arch/amd64/amd64/linux32_syscall.c
diff -u src/sys/arch/amd64/amd64/linux32_syscall.c:1.31 src/sys/arch/amd64/amd64/linux32_syscall.c:1.32
--- src/sys/arch/amd64/amd64/linux32_syscall.c:1.31	Tue Nov 25 14:54:08 2014
+++ src/sys/arch/amd64/amd64/linux32_syscall.c	Sat Mar  7 13:41:40 2015
@@ -1,7 +1,7 @@
-/*	$NetBSD: linux32_syscall.c,v 1.31 2014/11/25 19:54:08 christos Exp $ */
+/*	$NetBSD: linux32_syscall.c,v 1.32 2015/03/07 18:41:40 christos Exp $ */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux32_syscall.c,v 1.31 2014/11/25 19:54:08 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux32_syscall.c,v 1.32 2015/03/07 18:41:40 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -63,14 +63,14 @@ linux32_syscall(struct trapframe *frame)
 	args[4] = frame->tf_rdi & 0xffffffff;
 	args[5] = frame->tf_rbp & 0xffffffff;
 
-	if (__predict_false(p->p_trace_enabled)) {
+	if (__predict_false(p->p_trace_enabled || KDTRACE_ENTRY(callp->sy_return))) {
 		narg = callp->sy_narg;
 		if (__predict_false(narg > __arraycount(args)))
 			panic("impossible syscall narg, code %d, narg %zu",
 			    code, narg);
 		for (i = 0; i < narg; i++)
 			args64[i] = args[i] & 0xffffffff;
-		if ((error = trace_enter(code, args64, narg)) != 0)
+		if ((error = trace_enter(code, callp, args64)) != 0)
 			goto out;
 	}
 
@@ -102,7 +102,11 @@ out:
 		break;
 	}
 
-	if (__predict_false(p->p_trace_enabled))
-		trace_exit(code, rval, error);
+	if (__predict_false(p->p_trace_enabled || KDTRACE_ENTRY(callp->sy_return))) {
+		narg = callp->sy_narg;
+		for (i = 0; i < narg; i++)
+			args64[i] = args[i] & 0xffffffff;
+		trace_exit(code, callp, args64, rval, error);
+	}
 	userret(l);
 }
Index: src/sys/arch/amd64/amd64/linux_syscall.c
diff -u src/sys/arch/amd64/amd64/linux_syscall.c:1.31 src/sys/arch/amd64/amd64/linux_syscall.c:1.32
--- src/sys/arch/amd64/amd64/linux_syscall.c:1.31	Sun Dec 19 19:25:24 2010
+++ src/sys/arch/amd64/amd64/linux_syscall.c	Sat Mar  7 13:41:40 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_syscall.c,v 1.31 2010/12/20 00:25:24 matt Exp $ */
+/*	$NetBSD: linux_syscall.c,v 1.32 2015/03/07 18:41:40 christos Exp $ */
 
 /*-
  * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_syscall.c,v 1.31 2010/12/20 00:25:24 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_syscall.c,v 1.32 2015/03/07 18:41:40 christos Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_linux.h"
@@ -97,8 +97,8 @@ linux_syscall(struct trapframe *frame)
 	 * already adjacent in the syscall trapframe.
 	 */
 
-	if (__predict_false(p->p_trace_enabled)
-	    && (error = trace_enter(code, args, callp->sy_narg)) != 0)
+	if (__predict_false(p->p_trace_enabled || KDTRACE_ENTRY(callp->sy_entry))
+	    && (error = trace_enter(code, callp, args)) != 0)
 		goto out;
 
 	rval[0] = 0;
@@ -126,8 +126,8 @@ out:
 		break;
 	}
 
-	if (__predict_false(p->p_trace_enabled))
-		trace_exit(code, rval, error);
+	if (__predict_false(p->p_trace_enabled || KDTRACE_ENTRY(callp->sy_return)))
+		trace_exit(code, callp, args, rval, error);
 
 	userret(l);
 }

Index: src/sys/arch/amd64/amd64/netbsd32_syscall.c
diff -u src/sys/arch/amd64/amd64/netbsd32_syscall.c:1.32 src/sys/arch/amd64/amd64/netbsd32_syscall.c:1.33
--- src/sys/arch/amd64/amd64/netbsd32_syscall.c:1.32	Fri May 16 08:55:43 2014
+++ src/sys/arch/amd64/amd64/netbsd32_syscall.c	Sat Mar  7 13:41:40 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_syscall.c,v 1.32 2014/05/16 12:55:43 njoly Exp $	*/
+/*	$NetBSD: netbsd32_syscall.c,v 1.33 2015/03/07 18:41:40 christos Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -29,8 +29,12 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#if defined(_KERNEL) && defined(_KERNEL_OPT)
+#include "opt_dtrace.h"
+#endif
+
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscall.c,v 1.32 2014/05/16 12:55:43 njoly Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscall.c,v 1.33 2015/03/07 18:41:40 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -88,12 +92,12 @@ netbsd32_syscall(struct trapframe *frame
 			goto bad;
 	}
 
-	if (__predict_false(p->p_trace_enabled)
+	if (__predict_false(p->p_trace_enabled || KDTRACE_ENTRY(callp->sy_entry))
 	    && !__predict_false(callp->sy_flags & SYCALL_INDIRECT)) {
 		int narg = callp->sy_argsize >> 2;
 		for (i = 0; i < narg; i++)
 			args64[i] = args[i];
-		error = trace_enter(code, args64, narg);
+		error = trace_enter(code, callp, args64);
 		if (__predict_false(error != 0))
 			goto out;
 	}
@@ -103,9 +107,12 @@ netbsd32_syscall(struct trapframe *frame
 	error = sy_call(callp, l, args, rval);
 
 out:
-	if (__predict_false(p->p_trace_enabled)
+	if (__predict_false(p->p_trace_enabled || KDTRACE_ENTRY(callp->sy_return))
 	    && !__predict_false(callp->sy_flags & SYCALL_INDIRECT)) {
-		trace_exit(code, rval, error);
+		int narg = callp->sy_argsize >> 2;
+		for (i = 0; i < narg; i++)
+			args64[i] = args[i];
+		trace_exit(code, callp, args64, rval, error);
 	}
 
 	if (__predict_true(error == 0)) {

Reply via email to