[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/cddl/dev/prototype.c

Version: -  FREEBSD  -  FREEBSD7  -  FREEBSD71  -  FREEBSD70  -  FREEBSD6  -  FREEBSD64  -  FREEBSD63  -  FREEBSD62  -  FREEBSD61  -  FREEBSD60  -  FREEBSD5  -  FREEBSD55  -  FREEBSD54  -  FREEBSD53  -  FREEBSD52  -  FREEBSD51  -  FREEBSD50  -  FREEBSD4  -  FREEBSD3  -  FREEBSD22  -  linux-2.6  -  linux-2.4.22  -  MK83  -  MK84  -  PLAN9  -  DFBSD  -  NETBSD  -  NETBSD5  -  NETBSD4  -  NETBSD3  -  NETBSD20  -  OPENBSD  -  xnu-517  -  xnu-792  -  xnu-792.6.70  -  xnu-1228  -  OPENSOLARIS  -  minix-3-1-1  -  TRUSTEDBSD-SEBSD  -  FREEBSD-LIBC  -  FREEBSD7-LIBC  -  FREEBSD6-LIBC  -  GLIBC27 
SearchContext: -  none  -  excerpts  -  bigexcerpts 

  1 /*
  2  * This file is freeware. You are free to use it and add your own
  3  * license.
  4  *
  5  * $FreeBSD: src/sys/cddl/dev/prototype.c,v 1.1 2008/05/23 05:59:40 jb Exp $
  6  *
  7  */
  8 
  9 #include <sys/cdefs.h>
 10 #include <sys/param.h>
 11 #include <sys/systm.h>
 12 #include <sys/conf.h>
 13 #include <sys/kernel.h>
 14 #include <sys/module.h>
 15 
 16 #include <sys/dtrace.h>
 17 
 18 static d_open_t prototype_open;
 19 static int      prototype_unload(void);
 20 static void     prototype_getargdesc(void *, dtrace_id_t, void *, dtrace_argdesc_t *);
 21 static void     prototype_provide(void *, dtrace_probedesc_t *);
 22 static void     prototype_destroy(void *, dtrace_id_t, void *);
 23 static void     prototype_enable(void *, dtrace_id_t, void *);
 24 static void     prototype_disable(void *, dtrace_id_t, void *);
 25 static void     prototype_load(void *);
 26 
 27 static struct cdevsw prototype_cdevsw = {
 28         .d_version      = D_VERSION,
 29         .d_open         = prototype_open,
 30         .d_name         = "prototype",
 31 };
 32 
 33 static dtrace_pattr_t prototype_attr = {
 34 { DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_COMMON },
 35 { DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
 36 { DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_ISA },
 37 { DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_COMMON },
 38 { DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_ISA },
 39 };
 40 
 41 static dtrace_pops_t prototype_pops = {
 42         prototype_provide,
 43         NULL,
 44         prototype_enable,
 45         prototype_disable,
 46         NULL,
 47         NULL,
 48         prototype_getargdesc,
 49         NULL,
 50         NULL,
 51         prototype_destroy
 52 };
 53 
 54 static struct cdev              *prototype_cdev;
 55 static dtrace_provider_id_t     prototype_id;
 56 
 57 static void
 58 prototype_getargdesc(void *arg, dtrace_id_t id, void *parg, dtrace_argdesc_t *desc)
 59 {
 60 }
 61 
 62 static void
 63 prototype_provide(void *arg, dtrace_probedesc_t *desc)
 64 {
 65 }
 66 
 67 static void
 68 prototype_destroy(void *arg, dtrace_id_t id, void *parg)
 69 {
 70 }
 71 
 72 static void
 73 prototype_enable(void *arg, dtrace_id_t id, void *parg)
 74 {
 75 }
 76 
 77 static void
 78 prototype_disable(void *arg, dtrace_id_t id, void *parg)
 79 {
 80 }
 81 
 82 static void
 83 prototype_load(void *dummy)
 84 {
 85         /* Create the /dev/dtrace/prototype entry. */
 86         prototype_cdev = make_dev(&prototype_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600,
 87             "dtrace/prototype");
 88 
 89         if (dtrace_register("prototype", &prototype_attr, DTRACE_PRIV_USER,
 90             NULL, &prototype_pops, NULL, &prototype_id) != 0)
 91                 return;
 92 }
 93 
 94 
 95 static int
 96 prototype_unload()
 97 {
 98         int error = 0;
 99 
100         if ((error = dtrace_unregister(prototype_id)) != 0)
101                 return (error);
102 
103         destroy_dev(prototype_cdev);
104 
105         return (error);
106 }
107 
108 static int
109 prototype_modevent(module_t mod __unused, int type, void *data __unused)
110 {
111         int error = 0;
112 
113         switch (type) {
114         case MOD_LOAD:
115                 break;
116 
117         case MOD_UNLOAD:
118                 break;
119 
120         case MOD_SHUTDOWN:
121                 break;
122 
123         default:
124                 error = EOPNOTSUPP;
125                 break;
126 
127         }
128 
129         return (error);
130 }
131 
132 static int
133 prototype_open(struct cdev *dev __unused, int oflags __unused, int devtype __unused, struct thread *td __unused)
134 {
135         return (0);
136 }
137 
138 SYSINIT(prototype_load, SI_SUB_DTRACE_PROVIDER, SI_ORDER_ANY, prototype_load, NULL);
139 SYSUNINIT(prototype_unload, SI_SUB_DTRACE_PROVIDER, SI_ORDER_ANY, prototype_unload, NULL);
140 
141 DEV_MODULE(prototype, prototype_modevent, NULL);
142 MODULE_VERSION(prototype, 1);
143 MODULE_DEPEND(prototype, dtrace, 1, 1, 1);
144 MODULE_DEPEND(prototype, opensolaris, 1, 1, 1);
145 

Cache object: af91ba898208ecceb5874443e19149a2


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.