diff options
Diffstat (limited to 'usr/src/uts/sparc/dtrace/sdt.c')
| -rw-r--r-- | usr/src/uts/sparc/dtrace/sdt.c | 17 | 
1 files changed, 15 insertions, 2 deletions
| diff --git a/usr/src/uts/sparc/dtrace/sdt.c b/usr/src/uts/sparc/dtrace/sdt.c index af9ea8e155..8fbdf24fee 100644 --- a/usr/src/uts/sparc/dtrace/sdt.c +++ b/usr/src/uts/sparc/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> @@ -373,9 +376,19 @@ sdt_attach(dev_info_t *devi, ddi_attach_cmd_t cmd)  	sdt_devi = devi;  	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);  		} | 
