Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Jan 2008 23:09:10 GMT
From:      John Birrell <jb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 134038 for review
Message-ID:  <200801242309.m0ON9AUX025918@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=134038

Change 134038 by jb@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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200801242309.m0ON9AUX025918>