Module Name:    src
Committed By:   christos
Date:           Sat Mar  7 16:34:55 UTC 2015

Modified Files:
        src/sys/sys: param.h proc.h systm.h

Log Message:
add dtrace syscall glue:
- adds 2 members to sysent: these are the entry and exit probe ids
  they are non-zero only when dtrace is loaded
- add an emul specific probe for dtrace: this is NULL unless the emulation
  supports dtrace and is loaded
- adjust the syscall stub call trace_enter/exit if needed for systrace
- add more info to trace_enter and exit needed by systrace


To generate a diff of this commit:
cvs rdiff -u -r1.465 -r1.466 src/sys/sys/param.h
cvs rdiff -u -r1.320 -r1.321 src/sys/sys/proc.h
cvs rdiff -u -r1.266 -r1.267 src/sys/sys/systm.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/sys/param.h
diff -u src/sys/sys/param.h:1.465 src/sys/sys/param.h:1.466
--- src/sys/sys/param.h:1.465	Sat Feb 14 07:59:02 2015
+++ src/sys/sys/param.h	Sat Mar  7 11:34:55 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: param.h,v 1.465 2015/02/14 12:59:02 he Exp $	*/
+/*	$NetBSD: param.h,v 1.466 2015/03/07 16:34:55 christos Exp $	*/
 
 /*-
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -63,7 +63,7 @@
  *	2.99.9		(299000900)
  */
 
-#define	__NetBSD_Version__	799000500	/* NetBSD 7.99.5 */
+#define	__NetBSD_Version__	799000600	/* NetBSD 7.99.6 */
 
 #define __NetBSD_Prereq__(M,m,p) (((((M) * 100000000) + \
     (m) * 1000000) + (p) * 100) <= __NetBSD_Version__)

Index: src/sys/sys/proc.h
diff -u src/sys/sys/proc.h:1.320 src/sys/sys/proc.h:1.321
--- src/sys/sys/proc.h:1.320	Fri Feb 21 17:06:48 2014
+++ src/sys/sys/proc.h	Sat Mar  7 11:34:55 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: proc.h,v 1.320 2014/02/21 22:06:48 skrll Exp $	*/
+/*	$NetBSD: proc.h,v 1.321 2015/03/07 16:34:55 christos Exp $	*/
 
 /*-
  * Copyright (c) 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -177,6 +177,11 @@ struct emul {
 
 	size_t		e_ucsize;	/* size of ucontext_t */
 	void		(*e_startlwp)(void *);
+
+	/* Dtrace syscall probe */
+	void 		(*e_dtrace_syscall)(uint32_t, register_t,
+			    const struct sysent *, const void *,
+			    const register_t *, int);
 };
 
 /*

Index: src/sys/sys/systm.h
diff -u src/sys/sys/systm.h:1.266 src/sys/sys/systm.h:1.267
--- src/sys/sys/systm.h:1.266	Sun Aug  3 08:49:32 2014
+++ src/sys/sys/systm.h	Sat Mar  7 11:34:55 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: systm.h,v 1.266 2014/08/03 12:49:32 wiz Exp $	*/
+/*	$NetBSD: systm.h,v 1.267 2015/03/07 16:34:55 christos Exp $	*/
 
 /*-
  * Copyright (c) 1982, 1988, 1991, 1993
@@ -57,6 +57,7 @@
 struct clockframe;
 struct lwp;
 struct proc;
+struct sysent;
 struct timeval;
 struct tty;
 struct uio;
@@ -120,6 +121,8 @@ extern struct sysent {		/* system call t
 	short	sy_argsize;	/* total size of arguments */
 	int	sy_flags;	/* flags. see below */
 	sy_call_t *sy_call;     /* implementing function */
+	uint32_t sy_entry;	/* DTrace entry ID for systrace. */
+	uint32_t sy_return;	/* DTrace return ID for systrace. */
 } sysent[];
 extern int nsysent;
 #if	BYTE_ORDER == BIG_ENDIAN
@@ -388,8 +391,9 @@ void	doforkhooks(struct proc *, struct p
  */
 #ifdef _KERNEL
 bool	trace_is_enabled(struct proc *);
-int	trace_enter(register_t, const register_t *, int);
-void	trace_exit(register_t, register_t [], int);
+int	trace_enter(register_t, const struct sysent *, const void *);
+void	trace_exit(register_t, const struct sysent *, const void *,
+    register_t [], int);
 #endif
 
 int	uiomove(void *, size_t, struct uio *);

Reply via email to