summaryrefslogtreecommitdiffstats
path: root/sys/cddl/contrib/opensolaris/uts/common/dtrace
diff options
context:
space:
mode:
authorpfg <pfg@FreeBSD.org>2014-07-03 19:25:24 +0000
committerpfg <pfg@FreeBSD.org>2014-07-03 19:25:24 +0000
commitce7fc8f17b7c393663d9efb62c7c723eeef7641a (patch)
tree20c4d013e17af60fd5d3fb4fed2f8ed23df81c35 /sys/cddl/contrib/opensolaris/uts/common/dtrace
parente92d5f63cb3432058e0e061084d49f7eaa556112 (diff)
downloadFreeBSD-src-ce7fc8f17b7c393663d9efb62c7c723eeef7641a.zip
FreeBSD-src-ce7fc8f17b7c393663d9efb62c7c723eeef7641a.tar.gz
Merge from OpenSolaris (30-Jun-2009):
6851093 system drops to kmdb with anonymous dtrace probes + kmdb This has no effect on FreeBSD (code is ifdef'ed) but is useful as reference for future merges. MFC after: 1 week
Diffstat (limited to 'sys/cddl/contrib/opensolaris/uts/common/dtrace')
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
index 3f8284b..d796e30 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
@@ -16750,7 +16750,7 @@ dtrace_open(struct cdev *dev, int oflags, int devtype, struct thread *td)
if (state == NULL) {
#if defined(sun)
- if (--dtrace_opens == 0)
+ if (--dtrace_opens == 0 && dtrace_anon.dta_enabling == NULL)
(void) kdi_dtrace_set(KDI_DTSET_DTRACE_DEACTIVATE);
#else
--dtrace_opens;
@@ -16806,7 +16806,11 @@ dtrace_dtr(void *data)
ASSERT(dtrace_opens > 0);
#if defined(sun)
- if (--dtrace_opens == 0)
+ /*
+ * Only relinquish control of the kernel debugger interface when there
+ * are no consumers and no anonymous enablings.
+ */
+ if (--dtrace_opens == 0 && dtrace_anon.dta_enabling == NULL)
(void) kdi_dtrace_set(KDI_DTSET_DTRACE_DEACTIVATE);
#else
--dtrace_opens;
OpenPOWER on IntegriCloud