PERFORCE change 134038 for review
John Birrell
jb at FreeBSD.org
Thu Jan 24 15:09:11 PST 2008
http://perforce.freebsd.org/chv.cgi?CH=134038
Change 134038 by jb at jb_freebsd1 on 2008/01/24 23:08:44
Q: Who traces the tracer?
A: printfs!
... enabled via a sysctl.
Affected files ...
.. //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_ioctl.c#17 edit
Differences ...
==== //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_ioctl.c#17 (text+ko) ====
@@ -22,6 +22,11 @@
*
*/
+static int dtrace_verbose_ioctl;
+SYSCTL_INT(_debug_dtrace, OID_AUTO, verbose_ioctl, CTLFLAG_RW, &dtrace_verbose_ioctl, 0, "");
+
+#define DTRACE_IOCTL_PRINTF(fmt, ...) if (dtrace_verbose_ioctl) printf(fmt, ## __VA_ARGS__ )
+
/* ARGSUSED */
static int
dtrace_ioctl(struct cdev *dev, u_long cmd, caddr_t addr,
@@ -62,6 +67,8 @@
size_t size;
uintptr_t dest;
+ DTRACE_IOCTL_PRINTF("%s(%d): DTRACEIOC_AGGDESC\n",__func__,__LINE__);
+
if (copyin((void *) *paggdesc, &aggdesc, sizeof (aggdesc)) != 0)
return (EFAULT);
@@ -159,9 +166,17 @@
caddr_t cached;
dtrace_buffer_t *buf;
+ dtrace_debug_output();
+
if (copyin((void *) *pdesc, &desc, sizeof (desc)) != 0)
return (EFAULT);
+ DTRACE_IOCTL_PRINTF("%s(%d): %s curcpu %d cpu %d\n",
+ __func__,__LINE__,
+ cmd == DTRACEIOC_AGGSNAP ?
+ "DTRACEIOC_AGGSNAP":"DTRACEIOC_BUFSNAP",
+ curcpu, desc.dtbd_cpu);
+
if (desc.dtbd_cpu < 0 || desc.dtbd_cpu >= NCPU)
return (EINVAL);
@@ -258,6 +273,8 @@
ASSERT(cached == buf->dtb_xamot);
+ DTRACE_IOCTL_PRINTF("%s(%d): copyout the buffer snapshot\n",__func__,__LINE__);
+
/*
* We have our snapshot; now copy it out.
*/
@@ -274,6 +291,8 @@
mutex_exit(&dtrace_lock);
+ DTRACE_IOCTL_PRINTF("%s(%d): copyout buffer desc: size %zd drops %lu errors %lu\n",__func__,__LINE__,desc.dtbd_size,(u_long) desc.dtbd_drops,(u_long) desc.dtbd_errors);
+
/*
* Finally, copy out the buffer description.
*/
@@ -284,6 +303,9 @@
}
case DTRACEIOC_CONF: {
dtrace_conf_t conf;
+
+ DTRACE_IOCTL_PRINTF("%s(%d): DTRACEIOC_CONF\n",__func__,__LINE__);
+
bzero(&conf, sizeof (conf));
conf.dtc_difversion = DIF_VERSION;
conf.dtc_difintregs = DIF_DIR_NREGS;
@@ -300,6 +322,8 @@
int rval;
uint64_t len;
+ DTRACE_IOCTL_PRINTF("%s(%d): DTRACEIOC_DOFGET\n",__func__,__LINE__);
+
if (copyin((void *)dof, &hdr, sizeof (hdr)) != 0)
return (EFAULT);
@@ -321,6 +345,8 @@
int rval;
dtrace_enable_io_t *p = (dtrace_enable_io_t *) addr;
+ DTRACE_IOCTL_PRINTF("%s(%d): DTRACEIOC_ENABLE\n",__func__,__LINE__);
+
/*
* If a NULL argument has been passed, we take this as our
* cue to reevaluate our enablings.
@@ -386,6 +412,8 @@
uintptr_t dest;
int nrecs;
+ DTRACE_IOCTL_PRINTF("%s(%d): DTRACEIOC_EPROBE\n",__func__,__LINE__);
+
if (copyin((void *)*pepdesc, &epdesc, sizeof (epdesc)) != 0)
return (EFAULT);
@@ -456,6 +484,8 @@
char *str;
int len;
+ DTRACE_IOCTL_PRINTF("%s(%d): DTRACEIOC_FORMAT\n",__func__,__LINE__);
+
mutex_enter(&dtrace_lock);
if (fmt->dtfd_format == 0 ||
@@ -492,6 +522,8 @@
int rval;
processorid_t *cpuid = (processorid_t *) addr;
+ DTRACE_IOCTL_PRINTF("%s(%d): DTRACEIOC_GO\n",__func__,__LINE__);
+
rval = dtrace_state_go(state, cpuid);
return (rval);
@@ -501,6 +533,8 @@
dtrace_probe_t *probe;
dtrace_provider_t *prov;
+ DTRACE_IOCTL_PRINTF("%s(%d): DTRACEIOC_PROBEARG\n",__func__,__LINE__);
+
if (desc->dtargd_id == DTRACE_IDNONE)
return (EINVAL);
@@ -560,6 +594,10 @@
uid_t uid = 0;
zoneid_t zoneid = 0;
+ DTRACE_IOCTL_PRINTF("%s(%d): %s\n",__func__,__LINE__,
+ cmd == DTRACEIOC_PROBEMATCH ?
+ "DTRACEIOC_PROBEMATCH":"DTRACEIOC_PROBES");
+
p_desc->dtpd_provider[DTRACE_PROVNAMELEN - 1] = '\0';
p_desc->dtpd_mod[DTRACE_MODNAMELEN - 1] = '\0';
p_desc->dtpd_func[DTRACE_FUNCNAMELEN - 1] = '\0';
@@ -620,6 +658,8 @@
dtrace_providerdesc_t *pvd = (dtrace_providerdesc_t *) addr;
dtrace_provider_t *pvp;
+ DTRACE_IOCTL_PRINTF("%s(%d): DTRACEIOC_PROVIDER\n",__func__,__LINE__);
+
pvd->dtvd_name[DTRACE_PROVNAMELEN - 1] = '\0';
mutex_enter(&dtrace_provider_lock);
@@ -644,6 +684,8 @@
dtrace_probedesc_t *create = &desc->dtrpd_create;
int err;
+ DTRACE_IOCTL_PRINTF("%s(%d): DTRACEIOC_REPLICATE\n",__func__,__LINE__);
+
match->dtpd_provider[DTRACE_PROVNAMELEN - 1] = '\0';
match->dtpd_mod[DTRACE_MODNAMELEN - 1] = '\0';
match->dtpd_func[DTRACE_FUNCNAMELEN - 1] = '\0';
@@ -666,6 +708,8 @@
int i, j;
uint64_t nerrs;
+ DTRACE_IOCTL_PRINTF("%s(%d): DTRACEIOC_STATUS\n",__func__,__LINE__);
+
/*
* See the comment in dtrace_state_deadman() for the reason
* for setting dts_laststatus to INT64_MAX before setting
@@ -732,6 +776,8 @@
int rval;
processorid_t *cpuid = (processorid_t *) addr;
+ DTRACE_IOCTL_PRINTF("%s(%d): DTRACEIOC_STOP\n",__func__,__LINE__);
+
mutex_enter(&dtrace_lock);
rval = dtrace_state_stop(state, cpuid);
mutex_exit(&dtrace_lock);
More information about the p4-projects
mailing list