161 nulldev, /* probe */
162 tnf_attach, /* attach */
163 tnf_detach, /* detach */
164 nodev, /* reset */
165 &tnf_cb_ops, /* driver operations */
166 (struct bus_ops *)0, /* no bus operations */
167 NULL, /* power */
168 ddi_quiesce_not_needed, /* quiesce */
169 };
170
171 extern struct mod_ops mod_driverops;
172
173 static struct modldrv modldrv = {
174 &mod_driverops,
175 "kernel probes driver",
176 &tnf_ops,
177 };
178
179 static struct modlinkage modlinkage = {
180 MODREV_1,
181 (void *)&modldrv,
182 NULL
183 };
184
185 int
186 _init()
187 {
188 register int error;
189
190 mutex_init(&tnf_drv_state.tnf_mtx, NULL, MUTEX_DEFAULT, NULL);
191
192 if ((error = mod_install(&modlinkage)) != 0) {
193 mutex_destroy(&tnf_drv_state.tnf_mtx);
194 return (error);
195 }
196
197 /* Give t0 a tpdp */
198 if (!t0.t_tnf_tpdp)
199 t0.t_tnf_tpdp = kmem_zalloc(sizeof (tnf_ops_t), KM_SLEEP);
200 /* Initialize tag system */
201 tnf_tag_core_init();
202 tnf_tag_trace_init();
|
161 nulldev, /* probe */
162 tnf_attach, /* attach */
163 tnf_detach, /* detach */
164 nodev, /* reset */
165 &tnf_cb_ops, /* driver operations */
166 (struct bus_ops *)0, /* no bus operations */
167 NULL, /* power */
168 ddi_quiesce_not_needed, /* quiesce */
169 };
170
171 extern struct mod_ops mod_driverops;
172
173 static struct modldrv modldrv = {
174 &mod_driverops,
175 "kernel probes driver",
176 &tnf_ops,
177 };
178
179 static struct modlinkage modlinkage = {
180 MODREV_1,
181 { (void *)&modldrv, NULL }
182 };
183
184 int
185 _init()
186 {
187 register int error;
188
189 mutex_init(&tnf_drv_state.tnf_mtx, NULL, MUTEX_DEFAULT, NULL);
190
191 if ((error = mod_install(&modlinkage)) != 0) {
192 mutex_destroy(&tnf_drv_state.tnf_mtx);
193 return (error);
194 }
195
196 /* Give t0 a tpdp */
197 if (!t0.t_tnf_tpdp)
198 t0.t_tnf_tpdp = kmem_zalloc(sizeof (tnf_ops_t), KM_SLEEP);
199 /* Initialize tag system */
200 tnf_tag_core_init();
201 tnf_tag_trace_init();
|