summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkj <markj@FreeBSD.org>2018-02-13 22:43:07 +0000
committermarkj <markj@FreeBSD.org>2018-02-13 22:43:07 +0000
commite8f913f14fe3078cf047207036af4e7944e194b3 (patch)
tree6da56d1eca623df32cbe76d4eab0241adf58db92
parent680f34f59c45216292426191b2e013ba056e81c0 (diff)
downloadFreeBSD-src-e8f913f14fe3078cf047207036af4e7944e194b3.zip
FreeBSD-src-e8f913f14fe3078cf047207036af4e7944e194b3.tar.gz
MFC r327888, r327972, r327973:
Add "jid" and "jailname" variables to DTrace.
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/safety/tst.jailname.d44
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/safety/tst.jid.d44
-rw-r--r--cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c8
-rw-r--r--cddl/usr.sbin/dtrace/tests/common/safety/Makefile2
-rwxr-xr-xcddl/usr.sbin/dtrace/tests/tools/exclude.sh1
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c18
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h2
7 files changed, 116 insertions, 3 deletions
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/safety/tst.jailname.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/safety/tst.jailname.d
new file mode 100644
index 0000000..5256a10
--- /dev/null
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/safety/tst.jailname.d
@@ -0,0 +1,44 @@
+/*
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source. A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ */
+
+/*
+ * Copyright 2018 Domagoj Stolfa <domagoj.stolfa@cl.cam.ac.uk>.
+ *
+ * This software was developed by BAE Systems, the University of Cambridge
+ * Computer Laboratory, and Memorial University under DARPA/AFRL contract
+ * FA8650-15-C-7558 ("CADETS"), as part of the DARPA Transparent Computing
+ * (TC) research program.
+ *
+ */
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+/*
+ * ASSERTION:
+ * collect jailname at every fbt probe and at every firing of a
+ * high-frequency profile probe
+ */
+
+fbt:::
+{
+ @a[jailname] = count();
+}
+
+profile-4999hz
+{
+ @a[jailname] = count();
+}
+
+tick-1sec
+/n++ == 10/
+{
+ exit(0);
+}
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/safety/tst.jid.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/safety/tst.jid.d
new file mode 100644
index 0000000..034de93
--- /dev/null
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/safety/tst.jid.d
@@ -0,0 +1,44 @@
+/*
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source. A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ */
+
+/*
+ * Copyright 2018 Domagoj Stolfa <domagoj.stolfa@cl.cam.ac.uk>.
+ *
+ * This software was developed by BAE Systems, the University of Cambridge
+ * Computer Laboratory, and Memorial University under DARPA/AFRL contract
+ * FA8650-15-C-7558 ("CADETS"), as part of the DARPA Transparent Computing
+ * (TC) research program.
+ *
+ */
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+/*
+ * ASSERTION:
+ * collect jid at every fbt probe and at every firing of a
+ * high-frequency profile probe
+ */
+
+fbt:::
+{
+ @a[jid] = count();
+}
+
+profile-4999hz
+{
+ @a[jid] = count();
+}
+
+tick-1sec
+/n++ == 10/
+{
+ exit(0);
+}
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
index 3278a53..aa8f992 100644
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
@@ -311,6 +311,12 @@ static const dt_ident_t _dtrace_globals[] = {
DT_VERS_1_5, &dt_idops_func, "string(int, void *)" },
{ "ipl", DT_IDENT_SCALAR, 0, DIF_VAR_IPL, DT_ATTR_STABCMN, DT_VERS_1_0,
&dt_idops_type, "uint_t" },
+#ifdef __FreeBSD__
+{ "jailname", DT_IDENT_SCALAR, 0, DIF_VAR_JAILNAME,
+ DT_ATTR_STABCMN, DT_VERS_1_13, &dt_idops_type, "string" },
+{ "jid", DT_IDENT_SCALAR, 0, DIF_VAR_JID, DT_ATTR_STABCMN, DT_VERS_1_13,
+ &dt_idops_type, "int" },
+#endif
{ "json", DT_IDENT_FUNC, 0, DIF_SUBR_JSON, DT_ATTR_STABCMN, DT_VERS_1_11,
&dt_idops_func, "string(const char *, const char *)" },
{ "jstack", DT_IDENT_ACTFUNC, 0, DT_ACT_JSTACK, DT_ATTR_STABCMN, DT_VERS_1_0,
@@ -530,10 +536,8 @@ static const dt_ident_t _dtrace_globals[] = {
{ "walltimestamp", DT_IDENT_SCALAR, 0, DIF_VAR_WALLTIMESTAMP,
DT_ATTR_STABCMN, DT_VERS_1_0,
&dt_idops_type, "int64_t" },
-#ifdef illumos
{ "zonename", DT_IDENT_SCALAR, 0, DIF_VAR_ZONENAME,
DT_ATTR_STABCMN, DT_VERS_1_0, &dt_idops_type, "string" },
-#endif
#ifndef illumos
{ "cpu", DT_IDENT_SCALAR, 0, DIF_VAR_CPU,
diff --git a/cddl/usr.sbin/dtrace/tests/common/safety/Makefile b/cddl/usr.sbin/dtrace/tests/common/safety/Makefile
index 5056260..51b302f 100644
--- a/cddl/usr.sbin/dtrace/tests/common/safety/Makefile
+++ b/cddl/usr.sbin/dtrace/tests/common/safety/Makefile
@@ -19,6 +19,8 @@ ${PACKAGE}FILES= \
tst.gid.d \
tst.hton.d \
tst.index.d \
+ tst.jailname.d \
+ tst.jid.d \
tst.msgdsize.d \
tst.msgsize.d \
tst.null.d \
diff --git a/cddl/usr.sbin/dtrace/tests/tools/exclude.sh b/cddl/usr.sbin/dtrace/tests/tools/exclude.sh
index 819f68f..309e00c 100755
--- a/cddl/usr.sbin/dtrace/tests/tools/exclude.sh
+++ b/cddl/usr.sbin/dtrace/tests/tools/exclude.sh
@@ -41,7 +41,6 @@ exclude EXFAIL common/misc/tst.include.ksh
exclude EXFAIL common/safety/tst.copyin2.d
exclude EXFAIL common/safety/tst.msgdsize.d
exclude EXFAIL common/safety/tst.msgsize.d
-exclude EXFAIL common/safety/tst.zonename.d
exclude EXFAIL common/scalars/tst.misc.d
exclude EXFAIL common/scalars/tst.selfarray2.d
exclude EXFAIL common/sched/tst.enqueue.d
diff --git a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
index 21e430c..5d9a06d 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
@@ -3537,6 +3537,24 @@ dtrace_dif_variable(dtrace_mstate_t *mstate, dtrace_state_t *state, uint64_t v,
return (dtrace_dif_varstr(
(uintptr_t)curthread->t_procp->p_zone->zone_name,
state, mstate));
+#elif defined(__FreeBSD__)
+ /*
+ * On FreeBSD, we introduce compatibility to zonename by falling through
+ * into jailname.
+ */
+ case DIF_VAR_JAILNAME:
+ if (!dtrace_priv_kernel(state))
+ return (0);
+
+ return (dtrace_dif_varstr(
+ (uintptr_t)curthread->td_ucred->cr_prison->pr_name,
+ state, mstate));
+
+ case DIF_VAR_JID:
+ if (!dtrace_priv_kernel(state))
+ return (0);
+
+ return ((uint64_t)curthread->td_ucred->cr_prison->pr_id);
#else
return (0);
#endif
diff --git a/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h b/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
index 21c1e89..ef33a56 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
+++ b/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
@@ -254,6 +254,8 @@ typedef enum dtrace_probespec {
#define DIF_VAR_GID 0x011f /* process group ID */
#define DIF_VAR_ERRNO 0x0120 /* thread errno */
#define DIF_VAR_EXECARGS 0x0121 /* process arguments */
+#define DIF_VAR_JID 0x0122 /* process jail id */
+#define DIF_VAR_JAILNAME 0x0123 /* process jail name */
#ifndef illumos
#define DIF_VAR_CPU 0x0200
OpenPOWER on IntegriCloud