468 0, /* refcnt */
469 NULL, /* getinfo */
470 nulldev, /* identify */
471 nulldev, /* probe */
472 audio_attach, /* attach */
473 audio_detach, /* detach */
474 nodev, /* reset */
475 NULL, /* cb_ops */
476 NULL, /* bus_ops */
477 NULL, /* power */
478 };
479
480 static struct modldrv modldrv = {
481 &mod_driverops,
482 "Audio Framework",
483 &audio_dev_ops,
484 };
485
486 static struct modlinkage modlinkage = {
487 MODREV_1, /* MODREV_1 indicated by manual */
488 &modldrv,
489 NULL
490 };
491
492 struct audio_ops_helper {
493 struct cb_ops cbops; /* NB: must be first */
494 struct streamtab strtab;
495 struct qinit rqinit;
496 struct qinit wqinit;
497 struct module_info minfo;
498 char name[MODMAXNAMELEN+1];
499 };
500
501 void
502 audio_init_ops(struct dev_ops *devops, const char *name)
503 {
504 struct audio_ops_helper *helper;
505
506 helper = kmem_zalloc(sizeof (*helper), KM_SLEEP);
507
508 (void) strlcpy(helper->name, name, sizeof (helper->name));
509
|
468 0, /* refcnt */
469 NULL, /* getinfo */
470 nulldev, /* identify */
471 nulldev, /* probe */
472 audio_attach, /* attach */
473 audio_detach, /* detach */
474 nodev, /* reset */
475 NULL, /* cb_ops */
476 NULL, /* bus_ops */
477 NULL, /* power */
478 };
479
480 static struct modldrv modldrv = {
481 &mod_driverops,
482 "Audio Framework",
483 &audio_dev_ops,
484 };
485
486 static struct modlinkage modlinkage = {
487 MODREV_1, /* MODREV_1 indicated by manual */
488 { &modldrv, NULL }
489 };
490
491 struct audio_ops_helper {
492 struct cb_ops cbops; /* NB: must be first */
493 struct streamtab strtab;
494 struct qinit rqinit;
495 struct qinit wqinit;
496 struct module_info minfo;
497 char name[MODMAXNAMELEN+1];
498 };
499
500 void
501 audio_init_ops(struct dev_ops *devops, const char *name)
502 {
503 struct audio_ops_helper *helper;
504
505 helper = kmem_zalloc(sizeof (*helper), KM_SLEEP);
506
507 (void) strlcpy(helper->name, name, sizeof (helper->name));
508
|