Page MenuHomeFreeBSD

D46674.diff
No OneTemporary

D46674.diff

diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/fbtprovider/tst.argtest.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/fbtprovider/tst.argtest.ksh
new file mode 100644
--- /dev/null
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/fbtprovider/tst.argtest.ksh
@@ -0,0 +1,34 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2024 Mark Johnston <markj@FreeBSD.org>
+#
+
+dtrace=$1
+
+$dtrace -q -s /dev/stdin -c "sysctl debug.dtracetest.fbttest=1" <<__EOF__
+fbt:dtrace_test:fbttest:entry
+{
+ printf("%d %d %d %d %d %d %d %d %d %d\n", args[0], args[1], args[2],
+ args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
+}
+__EOF__
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/fbtprovider/tst.argtest.ksh.out b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/fbtprovider/tst.argtest.ksh.out
new file mode 100644
--- /dev/null
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/fbtprovider/tst.argtest.ksh.out
@@ -0,0 +1,3 @@
+debug.dtracetest.fbttest: 0 -> 0
+1 2 3 4 5 6 7 8 9 10
+
diff --git a/cddl/usr.sbin/dtrace/tests/common/fbtprovider/Makefile b/cddl/usr.sbin/dtrace/tests/common/fbtprovider/Makefile
--- a/cddl/usr.sbin/dtrace/tests/common/fbtprovider/Makefile
+++ b/cddl/usr.sbin/dtrace/tests/common/fbtprovider/Makefile
@@ -6,6 +6,8 @@
${PACKAGE}FILES= \
err.D_PDESC_ZERO.notreturn.d \
+ tst.argtest.ksh \
+ tst.argtest.ksh.out \
tst.basic.d \
tst.functionentry.d \
tst.functionreturnvalue.d \
diff --git a/sys/cddl/dev/dtrace/dtrace_test.c b/sys/cddl/dev/dtrace/dtrace_test.c
--- a/sys/cddl/dev/dtrace/dtrace_test.c
+++ b/sys/cddl/dev/dtrace/dtrace_test.c
@@ -51,13 +51,27 @@
vnode_t dummy;
vnode_t *rootvp = &dummy;
+enum argtest {
+ ARGTEST_SDT,
+ ARGTEST_FBT,
+};
+
+extern void fbttest(int, int, int, int, int, int, int, int, int, int);
+
+void __noinline
+fbttest(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j)
+{
+ printf("fbttest(%d, %d, %d, %d, %d, %d, %d, %d, %d, %d)\n",
+ a, b, c, d, e, f, g, h, i, j);
+}
+
/*
* 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)
+dtrace_test_argtest(SYSCTL_HANDLER_ARGS)
{
int val, error;
@@ -68,7 +82,10 @@
else if (val == 0)
return (0);
- SDT_PROBE6(test, , , sdttest, 1, 2, 3, 4, 5, 6);
+ if (arg2 == ARGTEST_SDT)
+ SDT_PROBE6(test, , , sdttest, 1, 2, 3, 4, 5, 6);
+ else
+ fbttest(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
return (error);
}
@@ -78,8 +95,13 @@
"");
SYSCTL_PROC(_debug_dtracetest, OID_AUTO, sdttest,
- CTLTYPE_INT | CTLFLAG_MPSAFE | CTLFLAG_RW, NULL, 0, dtrace_test_sdttest,
+ CTLTYPE_INT | CTLFLAG_MPSAFE | CTLFLAG_RW, NULL, ARGTEST_SDT,
+ dtrace_test_argtest,
"I", "Trigger the SDT test probe");
+SYSCTL_PROC(_debug_dtracetest, OID_AUTO, fbttest,
+ CTLTYPE_INT | CTLFLAG_MPSAFE | CTLFLAG_RW, NULL, ARGTEST_FBT,
+ dtrace_test_argtest,
+ "I", "Trigger the FBT test probe");
static int
dtrace_test_modevent(module_t mod, int type, void *data)

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 11, 12:14 AM (9 h, 6 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15748235
Default Alt Text
D46674.diff (3 KB)

Event Timeline