PERFORCE change 95575 for review

John Birrell jb at FreeBSD.org
Wed Apr 19 04:00:15 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=95575

Change 95575 by jb at jb_freebsd2 on 2006/04/19 03:59:53

	Sun's dtrace driver has over 13000 lines of code in it. That's in one
	file!
	
	I can't quite handle that much code in one file, so I'm going to build
	the FreeBSD version out of a bunch of separate .c files, all of which 
	are just included in dtrace.c so that the code compiles as though it
	is one file with static functions and all. I'll name the files by
	the function name. There are a lot. 8-)
	
	While I'm here, I'll create a sysctl node: debug.dtrace and under
	that a read-only: debug.dtrace.providers string so that dtrace(1) can
	find out what providers had registered. On Solaris this is done via
	the device file system (I think -- remember I don't actually have a
	Solaris machine to look at -- it doesn't recognise the hardware on
	any of my machines) which lists the names under /dev/dtrace/providers.
	We have to do this differently.

Affected files ...

.. //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace.c#3 edit
.. //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_close.c#1 add
.. //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_ioctl.c#1 add
.. //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_modevent.c#1 add
.. //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_open.c#1 add
.. //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_sysctl.c#1 add

Differences ...

==== //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace.c#3 (text+ko) ====

@@ -38,6 +38,7 @@
 #include <sys/poll.h>
 #include <sys/proc.h>
 #include <sys/selinfo.h>
+#include <sys/sysctl.h>
 #include <sys/uio.h>
 #include <sys/unistd.h>
 
@@ -64,109 +65,11 @@
 /* For use with make_dev(9)/destroy_dev(9). */
 static struct cdev *dtrace_dev;
 
-/* ARGSUSED */
-static int
-dtrace_close(struct cdev *dev __unused, int flags, int fmt __unused,
-    struct thread *td)
-{
-	return (0);
-}
-
-/* ARGSUSED */
-static int
-dtrace_ioctl(struct cdev *dev __unused, u_long cmd, caddr_t addr __unused,
-    int flags __unused, struct thread *td __unused)
-{
-	dtrace_conf_t conf;
-
-	int error = 0;
-
-	switch (cmd) {
-	/* Really handled in upper layer */
-	case FIOASYNC:
-	case FIONBIO:
-		break;
-	case DTRACEIOC_PROVIDER:
-		break;
-	case DTRACEIOC_PROBES:
-		break;
-	case DTRACEIOC_BUFSNAP:
-		break;
-	case DTRACEIOC_PROBEMATCH:
-		break;
-	case DTRACEIOC_ENABLE:
-		break;
-	case DTRACEIOC_AGGSNAP:
-		break;
-	case DTRACEIOC_EPROBE:
-		break;
-	case DTRACEIOC_PROBEARG:
-		break;
-	case DTRACEIOC_CONF:
-		bzero(&conf, sizeof (conf));
-		conf.dtc_difversion = DIF_VERSION;
-		conf.dtc_difintregs = DIF_DIR_NREGS;
-		conf.dtc_diftupregs = DIF_DTR_NREGS;
-		conf.dtc_ctfmodel = CTF_MODEL_NATIVE;
-
-		*((dtrace_conf_t *) addr) = conf;
-
-		return (0);
-		break;
-	case DTRACEIOC_STATUS:
-		break;
-	case DTRACEIOC_GO:
-		break;
-	case DTRACEIOC_STOP:
-		break;
-	case DTRACEIOC_AGGDESC:
-		break;
-	case DTRACEIOC_FORMAT:
-		break;
-	case DTRACEIOC_DOFGET:
-		break;
-	case DTRACEIOC_REPLICATE:
-		break;
-	default:
-		error = ENOTTY;
-	}
-	return (error);
-}
-
-/* ARGSUSED */
-static int
-dtrace_open(struct cdev *dev, int oflags, int devtype, struct thread *td)
-{
-	int error = 0;
-	return (error);
-}
-
-/* ARGSUSED */
-static int
-dtrace_modevent(module_t mod __unused, int type, void *data __unused)
-{
-	int error = 0;
-
-	switch (type) {
-	case MOD_LOAD:
-		dtrace_dev = make_dev(&dtrace_cdevsw, DTRACE_MINOR,
-		    UID_ROOT, GID_WHEEL, 0660, "dtrace");
-		break;
-
-	case MOD_UNLOAD:
-		destroy_dev(dtrace_dev);
-		break;
-
-	case MOD_SHUTDOWN:
-		break;
-
-	default:
-		error = EOPNOTSUPP;
-		break;
-
-	}
-	return (error);
-}
+#include <cddl/dev/dtrace/dtrace_sysctl.c>
+#include <cddl/dev/dtrace/dtrace_close.c>
+#include <cddl/dev/dtrace/dtrace_modevent.c>
+#include <cddl/dev/dtrace/dtrace_open.c>
+#include <cddl/dev/dtrace/dtrace_ioctl.c>
 
 DEV_MODULE(dtrace, dtrace_modevent, NULL);
 MODULE_VERSION(dtrace, 1);


More information about the p4-projects mailing list