150 nulldev, /* probe */
151 pseudonex_attach, /* attach */
152 pseudonex_detach, /* detach */
153 nodev, /* reset */
154 &pseudonex_cb_ops, /* driver operations */
155 &pseudonex_bus_ops, /* bus operations */
156 nulldev, /* power */
157 ddi_quiesce_not_needed, /* quiesce */
158 };
159
160 /*
161 * Module linkage information for the kernel.
162 */
163 static struct modldrv modldrv = {
164 &mod_driverops,
165 "nexus driver for 'pseudo' 1.31",
166 &pseudo_ops,
167 };
168
169 static struct modlinkage modlinkage = {
170 MODREV_1, (void *)&modldrv, NULL
171 };
172
173 int
174 _init(void)
175 {
176 int err;
177
178 if ((err = ddi_soft_state_init(&pseudonex_state,
179 sizeof (pseudonex_state_t), 0)) != 0) {
180 return (err);
181 }
182 if ((err = mod_install(&modlinkage)) != 0) {
183 ddi_soft_state_fini(&pseudonex_state);
184 return (err);
185 }
186 return (0);
187 }
188
189 int
190 _fini(void)
|
150 nulldev, /* probe */
151 pseudonex_attach, /* attach */
152 pseudonex_detach, /* detach */
153 nodev, /* reset */
154 &pseudonex_cb_ops, /* driver operations */
155 &pseudonex_bus_ops, /* bus operations */
156 nulldev, /* power */
157 ddi_quiesce_not_needed, /* quiesce */
158 };
159
160 /*
161 * Module linkage information for the kernel.
162 */
163 static struct modldrv modldrv = {
164 &mod_driverops,
165 "nexus driver for 'pseudo' 1.31",
166 &pseudo_ops,
167 };
168
169 static struct modlinkage modlinkage = {
170 MODREV_1, { (void *)&modldrv, NULL }
171 };
172
173 int
174 _init(void)
175 {
176 int err;
177
178 if ((err = ddi_soft_state_init(&pseudonex_state,
179 sizeof (pseudonex_state_t), 0)) != 0) {
180 return (err);
181 }
182 if ((err = mod_install(&modlinkage)) != 0) {
183 ddi_soft_state_fini(&pseudonex_state);
184 return (err);
185 }
186 return (0);
187 }
188
189 int
190 _fini(void)
|