546 timerfd_info, /* get_dev_info */
547 nulldev, /* identify */
548 nulldev, /* probe */
549 timerfd_attach, /* attach */
550 timerfd_detach, /* detach */
551 nodev, /* reset */
552 &timerfd_cb_ops, /* driver operations */
553 NULL, /* bus operations */
554 nodev, /* dev power */
555 ddi_quiesce_not_needed, /* quiesce */
556 };
557
558 static struct modldrv modldrv = {
559 &mod_driverops, /* module type (this is a pseudo driver) */
560 "timerfd support", /* name of module */
561 &timerfd_ops, /* driver ops */
562 };
563
564 static struct modlinkage modlinkage = {
565 MODREV_1,
566 (void *)&modldrv,
567 NULL
568 };
569
570 int
571 _init(void)
572 {
573 return (mod_install(&modlinkage));
574 }
575
576 int
577 _info(struct modinfo *modinfop)
578 {
579 return (mod_info(&modlinkage, modinfop));
580 }
581
582 int
583 _fini(void)
584 {
585 return (mod_remove(&modlinkage));
586 }
|
546 timerfd_info, /* get_dev_info */
547 nulldev, /* identify */
548 nulldev, /* probe */
549 timerfd_attach, /* attach */
550 timerfd_detach, /* detach */
551 nodev, /* reset */
552 &timerfd_cb_ops, /* driver operations */
553 NULL, /* bus operations */
554 nodev, /* dev power */
555 ddi_quiesce_not_needed, /* quiesce */
556 };
557
558 static struct modldrv modldrv = {
559 &mod_driverops, /* module type (this is a pseudo driver) */
560 "timerfd support", /* name of module */
561 &timerfd_ops, /* driver ops */
562 };
563
564 static struct modlinkage modlinkage = {
565 MODREV_1,
566 { (void *)&modldrv, NULL }
567 };
568
569 int
570 _init(void)
571 {
572 return (mod_install(&modlinkage));
573 }
574
575 int
576 _info(struct modinfo *modinfop)
577 {
578 return (mod_info(&modlinkage, modinfop));
579 }
580
581 int
582 _fini(void)
583 {
584 return (mod_remove(&modlinkage));
585 }
|