366 nulldev, /* identify */
367 nulldev, /* probe */
368 di_attach, /* attach */
369 di_detach, /* detach */
370 nodev, /* reset */
371 &di_cb_ops, /* driver operations */
372 NULL /* bus operations */
373 };
374
375 /*
376 * Module linkage information for the kernel.
377 */
378 static struct modldrv modldrv = {
379 &mod_driverops,
380 "DEVINFO Driver",
381 &di_ops
382 };
383
384 static struct modlinkage modlinkage = {
385 MODREV_1,
386 &modldrv,
387 NULL
388 };
389
390 int
391 _init(void)
392 {
393 int error;
394
395 mutex_init(&di_lock, NULL, MUTEX_DRIVER, NULL);
396
397 error = mod_install(&modlinkage);
398 if (error != 0) {
399 mutex_destroy(&di_lock);
400 return (error);
401 }
402
403 return (0);
404 }
405
406 int
407 _info(struct modinfo *modinfop)
|
366 nulldev, /* identify */
367 nulldev, /* probe */
368 di_attach, /* attach */
369 di_detach, /* detach */
370 nodev, /* reset */
371 &di_cb_ops, /* driver operations */
372 NULL /* bus operations */
373 };
374
375 /*
376 * Module linkage information for the kernel.
377 */
378 static struct modldrv modldrv = {
379 &mod_driverops,
380 "DEVINFO Driver",
381 &di_ops
382 };
383
384 static struct modlinkage modlinkage = {
385 MODREV_1,
386 { &modldrv, NULL }
387 };
388
389 int
390 _init(void)
391 {
392 int error;
393
394 mutex_init(&di_lock, NULL, MUTEX_DRIVER, NULL);
395
396 error = mod_install(&modlinkage);
397 if (error != 0) {
398 mutex_destroy(&di_lock);
399 return (error);
400 }
401
402 return (0);
403 }
404
405 int
406 _info(struct modinfo *modinfop)
|