Author: avg
Date: Fri Jan 17 11:13:45 2014
New Revision: 260820
URL: http://svnweb.freebsd.org/changeset/base/260820

Log:
  MFC r251237: Port the SDT test

Modified:
  stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.c
  stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.d
  stable/9/sys/cddl/dev/dtrace/dtrace_test.c
  stable/9/sys/modules/dtrace/dtrace_test/Makefile
Directory Properties:
  stable/9/cddl/contrib/opensolaris/   (props changed)
  stable/9/sys/   (props changed)
  stable/9/sys/modules/   (props changed)

Modified: 
stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.c
==============================================================================
--- 
stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.c  
    Fri Jan 17 11:09:05 2014        (r260819)
+++ 
stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.c  
    Fri Jan 17 11:13:45 2014        (r260820)
@@ -26,26 +26,24 @@
 
 #pragma ident  "%Z%%M% %I%     %E% SMI"
 
+#include <sys/types.h>
+#include <sys/sysctl.h>
+
+#include <err.h>
 #include <unistd.h>
-#ifndef __FreeBSD__
-#include <sys/uadmin.h>
-#endif
 
 int
 main(int argc, char **argv)
 {
-#ifdef __FreeBSD__
-       return (1);
-#else
+       int val = 1;
+
        while (1) {
-               if (uadmin(A_SDTTEST, 0, 0) < 0) {
-                       perror("uadmin");
-                       return (1);
-               }
+               if (sysctlbyname("debug.dtracetest.sdttest", NULL, NULL, &val,
+                   sizeof(val)))
+                       err(1, "sysctlbyname");
 
                sleep(1);
        }
 
        return (0);
-#endif
 }

Modified: 
stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.d
==============================================================================
--- 
stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.d  
    Fri Jan 17 11:09:05 2014        (r260819)
+++ 
stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.d  
    Fri Jan 17 11:13:45 2014        (r260820)
@@ -43,7 +43,7 @@ ERROR
        exit(1);
 }
 
-sdt:::test
+test:::sdttest
 /arg0 != 1 || arg1 != 2 || arg2 != 3 || arg3 != 4 || arg4 != 5 || arg5 != 6 ||
     arg6 != 7/
 {
@@ -54,7 +54,7 @@ sdt:::test
        exit(1);
 }
 
-sdt:::test
+test:::sdttest
 {
        exit(0);
 }

Modified: stable/9/sys/cddl/dev/dtrace/dtrace_test.c
==============================================================================
--- stable/9/sys/cddl/dev/dtrace/dtrace_test.c  Fri Jan 17 11:09:05 2014        
(r260819)
+++ stable/9/sys/cddl/dev/dtrace/dtrace_test.c  Fri Jan 17 11:13:45 2014        
(r260820)
@@ -25,15 +25,25 @@
  * $FreeBSD$
  *
  */
+#include "opt_kdtrace.h"
 
 #include <sys/cdefs.h>
 #include <sys/types.h>
 #include <sys/param.h>
+#include <sys/systm.h>
+
 #include <sys/conf.h>
 #include <sys/kernel.h>
 #include <sys/module.h>
+#include <sys/sdt.h>
+#include <sys/sysctl.h>
 #include <sys/vnode.h>
 
+SDT_PROVIDER_DEFINE(test);
+
+SDT_PROBE_DEFINE7(test, , , sdttest, sdttest, "int", "int", "int", "int", 
"int",
+    "int", "int");
+
 /*
  * These are variables that the DTrace test suite references in the
  * Solaris kernel. We define them here so that the tests function 
@@ -45,6 +55,33 @@ typedef struct vnode vnode_t;
 vnode_t dummy;
 vnode_t *rootvp = &dummy;
 
+/*
+ * Test SDT probes with more than 5 arguments. On amd64, such probes require
+ * special handling since only the first 5 arguments will be passed to
+ * dtrace_probe() in registers; the rest must be fetched off the stack.
+ */
+static int
+dtrace_test_sdttest(SYSCTL_HANDLER_ARGS)
+{
+       int val, error;
+
+       val = 0;
+       error = sysctl_handle_int(oidp, &val, 0, req);
+       if (error || req->newptr == NULL)
+               return (error);
+       else if (val == 0)
+               return (0);
+
+       SDT_PROBE7(test, , , sdttest, 1, 2, 3, 4, 5, 6, 7);
+
+       return (error);
+}
+
+static SYSCTL_NODE(_debug, OID_AUTO, dtracetest, CTLFLAG_RD, 0, "");
+
+SYSCTL_PROC(_debug_dtracetest, OID_AUTO, sdttest, CTLTYPE_INT | CTLFLAG_RW,
+    NULL, 0, dtrace_test_sdttest, "I", "Trigger the SDT test probe");
+
 static int
 dtrace_test_modevent(module_t mod, int type, void *data)
 {

Modified: stable/9/sys/modules/dtrace/dtrace_test/Makefile
==============================================================================
--- stable/9/sys/modules/dtrace/dtrace_test/Makefile    Fri Jan 17 11:09:05 
2014        (r260819)
+++ stable/9/sys/modules/dtrace/dtrace_test/Makefile    Fri Jan 17 11:13:45 
2014        (r260820)
@@ -5,8 +5,9 @@
 KMOD=          dtrace_test
 SRCS=          dtrace_test.c
 
+SRCS+=         opt_kdtrace.h
 SRCS+=         vnode_if.h
-               
+
 CFLAGS+=       -I${.CURDIR}/../../..
 
 CFLAGS+=       -D_KERNEL
_______________________________________________
svn-src-stable-9@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "svn-src-stable-9-unsubscr...@freebsd.org"

Reply via email to