17168 dtrace_info, /* get_dev_info */
17169 nulldev, /* identify */
17170 nulldev, /* probe */
17171 dtrace_attach, /* attach */
17172 dtrace_detach, /* detach */
17173 nodev, /* reset */
17174 &dtrace_cb_ops, /* driver operations */
17175 NULL, /* bus operations */
17176 nodev, /* dev power */
17177 ddi_quiesce_not_needed, /* quiesce */
17178 };
17179
17180 static struct modldrv modldrv = {
17181 &mod_driverops, /* module type (this is a pseudo driver) */
17182 "Dynamic Tracing", /* name of module */
17183 &dtrace_ops, /* driver ops */
17184 };
17185
17186 static struct modlinkage modlinkage = {
17187 MODREV_1,
17188 (void *)&modldrv,
17189 NULL
17190 };
17191
17192 int
17193 _init(void)
17194 {
17195 return (mod_install(&modlinkage));
17196 }
17197
17198 int
17199 _info(struct modinfo *modinfop)
17200 {
17201 return (mod_info(&modlinkage, modinfop));
17202 }
17203
17204 int
17205 _fini(void)
17206 {
17207 return (mod_remove(&modlinkage));
17208 }
|
17168 dtrace_info, /* get_dev_info */
17169 nulldev, /* identify */
17170 nulldev, /* probe */
17171 dtrace_attach, /* attach */
17172 dtrace_detach, /* detach */
17173 nodev, /* reset */
17174 &dtrace_cb_ops, /* driver operations */
17175 NULL, /* bus operations */
17176 nodev, /* dev power */
17177 ddi_quiesce_not_needed, /* quiesce */
17178 };
17179
17180 static struct modldrv modldrv = {
17181 &mod_driverops, /* module type (this is a pseudo driver) */
17182 "Dynamic Tracing", /* name of module */
17183 &dtrace_ops, /* driver ops */
17184 };
17185
17186 static struct modlinkage modlinkage = {
17187 MODREV_1,
17188 { (void *)&modldrv, NULL }
17189 };
17190
17191 int
17192 _init(void)
17193 {
17194 return (mod_install(&modlinkage));
17195 }
17196
17197 int
17198 _info(struct modinfo *modinfop)
17199 {
17200 return (mod_info(&modlinkage, modinfop));
17201 }
17202
17203 int
17204 _fini(void)
17205 {
17206 return (mod_remove(&modlinkage));
17207 }
|