101 ugen_skel_getinfo, /* info */
102 nulldev, /* indetify */
103 nulldev, /* probe */
104 ugen_skel_attach, /* attach */
105 ugen_skel_detach, /* detach */
106 nodev, /* reset */
107 &ugen_skel_cb_ops, /* driver operations */
108 NULL, /* bus operations */
109 ugen_skel_power, /* power */
110 ddi_quiesce_not_needed, /* devo_quiesce */
111 };
112
113 static struct modldrv modldrv = {
114 &mod_driverops, /* Module type */
115 "USB Generic driver", /* Name of the module. */
116 &ugen_skel_ops, /* driver ops */
117 };
118
119 static struct modlinkage modlinkage = {
120 MODREV_1,
121 (void *)&modldrv,
122 NULL
123 };
124
125
126 int
127 _init()
128 {
129 int rval;
130
131 if ((rval = ddi_soft_state_init(&ugen_skel_statep,
132 sizeof (ugen_skel_state_t), UGEN_INSTANCES)) != 0) {
133
134 return (rval);
135 }
136
137 if ((rval = mod_install(&modlinkage)) != 0) {
138 ddi_soft_state_fini(&ugen_skel_statep);
139
140 return (rval);
141 }
142
|
101 ugen_skel_getinfo, /* info */
102 nulldev, /* indetify */
103 nulldev, /* probe */
104 ugen_skel_attach, /* attach */
105 ugen_skel_detach, /* detach */
106 nodev, /* reset */
107 &ugen_skel_cb_ops, /* driver operations */
108 NULL, /* bus operations */
109 ugen_skel_power, /* power */
110 ddi_quiesce_not_needed, /* devo_quiesce */
111 };
112
113 static struct modldrv modldrv = {
114 &mod_driverops, /* Module type */
115 "USB Generic driver", /* Name of the module. */
116 &ugen_skel_ops, /* driver ops */
117 };
118
119 static struct modlinkage modlinkage = {
120 MODREV_1,
121 { (void *)&modldrv, NULL }
122 };
123
124
125 int
126 _init()
127 {
128 int rval;
129
130 if ((rval = ddi_soft_state_init(&ugen_skel_statep,
131 sizeof (ugen_skel_state_t), UGEN_INSTANCES)) != 0) {
132
133 return (rval);
134 }
135
136 if ((rval = mod_install(&modlinkage)) != 0) {
137 ddi_soft_state_fini(&ugen_skel_statep);
138
139 return (rval);
140 }
141
|