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