202 static struct dev_ops bl_ops = {
203 DEVO_REV, /* devo_rev */
204 0, /* devo_refcnt */
205 bl_getinfo, /* devo_getinfo */
206 nulldev, /* devo_identify */
207 nulldev, /* devo_probe */
208 bl_attach, /* devo_attach */
209 bl_detach, /* devo_detach */
210 nodev, /* devo_reset */
211 &bl_cb_ops, /* devo_cb_ops */
212 (struct bus_ops *)0, /* devo_bus_ops */
213 NULL, /* devo_power */
214 ddi_quiesce_not_needed, /* devo_quiesce */
215 };
216
217 static struct modldrv modldrv = {
218 &mod_driverops, "blacklist driver", &bl_ops,
219 };
220
221 static struct modlinkage modlinkage = {
222 MODREV_1, &modldrv, NULL
223 };
224
225 int
226 _init(void)
227 {
228 return (mod_install(&modlinkage));
229 }
230
231 int
232 _info(struct modinfo *modinfop)
233 {
234 return (mod_info(&modlinkage, modinfop));
235 }
236
237 int
238 _fini(void)
239 {
240 return (mod_remove(&modlinkage));
241 }
|
202 static struct dev_ops bl_ops = {
203 DEVO_REV, /* devo_rev */
204 0, /* devo_refcnt */
205 bl_getinfo, /* devo_getinfo */
206 nulldev, /* devo_identify */
207 nulldev, /* devo_probe */
208 bl_attach, /* devo_attach */
209 bl_detach, /* devo_detach */
210 nodev, /* devo_reset */
211 &bl_cb_ops, /* devo_cb_ops */
212 (struct bus_ops *)0, /* devo_bus_ops */
213 NULL, /* devo_power */
214 ddi_quiesce_not_needed, /* devo_quiesce */
215 };
216
217 static struct modldrv modldrv = {
218 &mod_driverops, "blacklist driver", &bl_ops,
219 };
220
221 static struct modlinkage modlinkage = {
222 MODREV_1, { &modldrv, NULL }
223 };
224
225 int
226 _init(void)
227 {
228 return (mod_install(&modlinkage));
229 }
230
231 int
232 _info(struct modinfo *modinfop)
233 {
234 return (mod_info(&modlinkage, modinfop));
235 }
236
237 int
238 _fini(void)
239 {
240 return (mod_remove(&modlinkage));
241 }
|