296 }
297
298 static struct module_info logm_info =
299 { LOG_MID, "LOG", LOG_MINPS, LOG_MAXPS, LOG_HIWAT, LOG_LOWAT };
300
301 static struct qinit logrinit =
302 { NULL, log_rsrv, log_open, log_close, NULL, &logm_info, NULL };
303
304 static struct qinit logwinit =
305 { log_wput, NULL, NULL, NULL, NULL, &logm_info, NULL };
306
307 static struct streamtab loginfo = { &logrinit, &logwinit, NULL, NULL };
308
309 DDI_DEFINE_STREAM_OPS(log_ops, nulldev, nulldev, log_attach, nodev,
310 nodev, log_info, D_NEW | D_MP | D_MTPERMOD, &loginfo,
311 ddi_quiesce_not_needed);
312
313 static struct modldrv modldrv =
314 { &mod_driverops, "streams log driver", &log_ops };
315
316 static struct modlinkage modlinkage = { MODREV_1, (void *)&modldrv, NULL };
317
318 int
319 _init()
320 {
321 return (mod_install(&modlinkage));
322 }
323
324 int
325 _fini()
326 {
327 return (mod_remove(&modlinkage));
328 }
329
330 int
331 _info(struct modinfo *modinfop)
332 {
333 return (mod_info(&modlinkage, modinfop));
334 }
|
296 }
297
298 static struct module_info logm_info =
299 { LOG_MID, "LOG", LOG_MINPS, LOG_MAXPS, LOG_HIWAT, LOG_LOWAT };
300
301 static struct qinit logrinit =
302 { NULL, log_rsrv, log_open, log_close, NULL, &logm_info, NULL };
303
304 static struct qinit logwinit =
305 { log_wput, NULL, NULL, NULL, NULL, &logm_info, NULL };
306
307 static struct streamtab loginfo = { &logrinit, &logwinit, NULL, NULL };
308
309 DDI_DEFINE_STREAM_OPS(log_ops, nulldev, nulldev, log_attach, nodev,
310 nodev, log_info, D_NEW | D_MP | D_MTPERMOD, &loginfo,
311 ddi_quiesce_not_needed);
312
313 static struct modldrv modldrv =
314 { &mod_driverops, "streams log driver", &log_ops };
315
316 static struct modlinkage modlinkage = { MODREV_1, { (void *)&modldrv, NULL } };
317
318 int
319 _init()
320 {
321 return (mod_install(&modlinkage));
322 }
323
324 int
325 _fini()
326 {
327 return (mod_remove(&modlinkage));
328 }
329
330 int
331 _info(struct modinfo *modinfop)
332 {
333 return (mod_info(&modlinkage, modinfop));
334 }
|