diff options
author | pfg <pfg@FreeBSD.org> | 2014-07-03 19:25:24 +0000 |
---|---|---|
committer | pfg <pfg@FreeBSD.org> | 2014-07-03 19:25:24 +0000 |
commit | ce7fc8f17b7c393663d9efb62c7c723eeef7641a (patch) | |
tree | 20c4d013e17af60fd5d3fb4fed2f8ed23df81c35 /sys/cddl/contrib/opensolaris/uts/common/dtrace | |
parent | e92d5f63cb3432058e0e061084d49f7eaa556112 (diff) | |
download | FreeBSD-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.c | 8 |
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; |