diff options
Diffstat (limited to 'usr/src/uts/intel/dtrace/sdt.c')
-rw-r--r-- | usr/src/uts/intel/dtrace/sdt.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/usr/src/uts/intel/dtrace/sdt.c b/usr/src/uts/intel/dtrace/sdt.c index 38be2233b1..27cb19e06c 100644 --- a/usr/src/uts/intel/dtrace/sdt.c +++ b/usr/src/uts/intel/dtrace/sdt.c @@ -23,6 +23,9 @@ * Use is subject to license terms. */ +/* + * Copyright (c) 2012, Joyent, Inc. All rights reserved. + */ #include <sys/modctl.h> #include <sys/sunddi.h> @@ -419,9 +422,19 @@ sdt_attach(dev_info_t *devi, ddi_attach_cmd_t cmd) dtrace_invop_add(sdt_invop); for (prov = sdt_providers; prov->sdtp_name != NULL; prov++) { + uint32_t priv; + + if (prov->sdtp_priv == DTRACE_PRIV_NONE) { + priv = DTRACE_PRIV_KERNEL; + sdt_pops.dtps_mode = NULL; + } else { + priv = prov->sdtp_priv; + ASSERT(priv == DTRACE_PRIV_USER); + sdt_pops.dtps_mode = sdt_mode; + } + if (dtrace_register(prov->sdtp_name, prov->sdtp_attr, - DTRACE_PRIV_KERNEL, NULL, - &sdt_pops, prov, &prov->sdtp_id) != 0) { + priv, NULL, &sdt_pops, prov, &prov->sdtp_id) != 0) { cmn_err(CE_WARN, "failed to register sdt provider %s", prov->sdtp_name); } |