194 nulldev, /* devo_identify */
195 nulldev, /* devo_probe */
196 vscan_drv_attach, /* devo_attach */
197 vscan_drv_detach, /* devo_detach */
198 nodev, /* devo_reset */
199 &cbops, /* devo_cb_ops */
200 NULL, /* devo_bus_ops */
201 NULL, /* devo_power */
202 ddi_quiesce_not_needed, /* devo_quiesce */
203 };
204
205 static struct modldrv modldrv = {
206 &mod_driverops, /* drv_modops */
207 "virus scanning", /* drv_linkinfo */
208 &devops,
209 };
210
211 static struct modlinkage modlinkage = {
212
213 MODREV_1, /* revision of the module, must be: MODREV_1 */
214 &modldrv, /* ptr to linkage structures */
215 NULL,
216 };
217
218
219 /*
220 * _init
221 */
222 int
223 _init(void)
224 {
225 int rc;
226
227 vscan_drv_inst_state_sz =
228 sizeof (vscan_drv_inst_state_t) * (vs_nodes_max + 1);
229
230 if (vscan_door_init() != 0)
231 return (DDI_FAILURE);
232
233 if (vscan_svc_init() != 0) {
234 vscan_door_fini();
235 return (DDI_FAILURE);
|
194 nulldev, /* devo_identify */
195 nulldev, /* devo_probe */
196 vscan_drv_attach, /* devo_attach */
197 vscan_drv_detach, /* devo_detach */
198 nodev, /* devo_reset */
199 &cbops, /* devo_cb_ops */
200 NULL, /* devo_bus_ops */
201 NULL, /* devo_power */
202 ddi_quiesce_not_needed, /* devo_quiesce */
203 };
204
205 static struct modldrv modldrv = {
206 &mod_driverops, /* drv_modops */
207 "virus scanning", /* drv_linkinfo */
208 &devops,
209 };
210
211 static struct modlinkage modlinkage = {
212
213 MODREV_1, /* revision of the module, must be: MODREV_1 */
214 { &modldrv, NULL } /* ptr to linkage structures */
215 };
216
217
218 /*
219 * _init
220 */
221 int
222 _init(void)
223 {
224 int rc;
225
226 vscan_drv_inst_state_sz =
227 sizeof (vscan_drv_inst_state_t) * (vs_nodes_max + 1);
228
229 if (vscan_door_init() != 0)
230 return (DDI_FAILURE);
231
232 if (vscan_svc_init() != 0) {
233 vscan_door_fini();
234 return (DDI_FAILURE);
|