int _init(void) { int ret; ret = ddi_soft_state_init(&emul64_state, sizeof (struct emul64), EMUL64_INITIAL_SOFT_SPACE); if (ret != 0) return (ret); if ((ret = scsi_hba_init(&modlinkage)) != 0) { ddi_soft_state_fini(&emul64_state); return (ret); } /* Set the number of task threads to the number of CPUs */ if (boot_max_ncpus == -1) { emul64_task_nthreads = max_ncpus; } else { emul64_task_nthreads = boot_max_ncpus; } emul64_bsd_init(); ret = mod_install(&modlinkage); if (ret != 0) { emul64_bsd_fini(); scsi_hba_fini(&modlinkage); ddi_soft_state_fini(&emul64_state); } return (ret); }
/* * * --- DDI/DKI entry points * */ int _init(void) { int error; #ifndef NPROBE (void) tnf_mod_load(); #endif error = ddi_soft_state_init(&av1394_statep, sizeof (av1394_inst_t), 1); if (error != 0) { #ifndef NPROBE (void) tnf_mod_unload(&av1394_modlinkage); #endif return (error); } if ((error = mod_install(&av1394_modlinkage)) != 0) { ddi_soft_state_fini(&av1394_statep); #ifndef NPROBE (void) tnf_mod_unload(&av1394_modlinkage); #endif } return (error); }
int _init(void) { int err; uint64_t majornum; uint64_t minornum; /* * Check HV intr group api versioning. * Note that cnex assumes interrupt cookies is * in version 1.0 of the intr group api. */ if ((err = hsvc_version(HSVC_GROUP_INTR, &majornum, &minornum)) != 0) { cmn_err(CE_WARN, "cnex: failed to get intr api " "group versioning errno=%d", err); return (err); } else if ((majornum != 1) && (majornum != 2)) { cmn_err(CE_WARN, "cnex: unsupported intr api group: " "maj:0x%lx, min:0x%lx", majornum, minornum); return (ENOTSUP); } if ((err = ddi_soft_state_init(&cnex_state, sizeof (cnex_soft_state_t), 0)) != 0) { return (err); } if ((err = mod_install(&modlinkage)) != 0) { ddi_soft_state_fini(&cnex_state); return (err); } return (0); }
/** * Initializes a loadable module. It calls `mod_install' to install the * `modlinkage' and `modldrv' structures. */ int _init(void) { int error; error = ddi_soft_state_init(&quantis_soft_state_p, sizeof(quantis_soft_state_t), 0); if (error != 0) { QUANTIS_ERROR("Could not initialize the soft state tree.\n"); return error; } error = mod_install(&modlinkage); if (error != 0) { QUANTIS_ERROR("Could not install the modlinkage structure.\n"); ddi_soft_state_fini(&quantis_soft_state_p); return error; } mutex_init(&quantis_mutex, NULL, MUTEX_DRIVER, NULL); card_count = 0; LOG_DEBUG0("Initialized the quantis driver\n"); return error; }
/************************************************************************* * _init(9e), _info(9e), _fini(9e) * * ローダブルカーネルモジュールのエントリーポイント *************************************************************************/ int _init() { int err; cmn_err(CE_CONT, "%s Filesystem Ver %s \n", PACKAGE_NAME, PACKAGE_VERSION); /* * デバイス管理構造体の管理用の iumfscntl_soft_root を初期化 * iumfscntl のデバイス管理構造体は iumfscntl_soft_t として定義されている。 */ if (ddi_soft_state_init(&iumfscntl_soft_root, sizeof (iumfscntl_soft_t), 1) != 0) { return (DDI_FAILURE); } err = mod_install(&modlinkage); if (err != 0) { ddi_soft_state_fini(&iumfscntl_soft_root); cmn_err(CE_CONT, "_init: mod_install returned with error %d", err); } /* * グローバルロックを初期化 */ mutex_init(&iumfs_global_lock, NULL, MUTEX_DEFAULT, NULL); return (err); }
int _init(void) { int error; if (strcmp(tod_module_name, "todds1307") == 0) { if ((error = ddi_soft_state_init(&ds1307_statep, sizeof (ds1307_state_t), 0)) != DDI_SUCCESS) { return (error); } tod_ops.tod_get = todds1307_get; tod_ops.tod_set = todds1307_set; tod_ops.tod_set_watchdog_timer = todds1307_set_watchdog_timer; tod_ops.tod_clear_watchdog_timer = todds1307_clear_watchdog_timer; tod_ops.tod_set_power_alarm = todds1307_set_power_alarm; tod_ops.tod_clear_power_alarm = todds1307_clear_power_alarm; } (void) todds1307_setup_prom(); /* * Install the module */ if ((error = mod_install(&todds1307_modlinkage)) != 0) { ddi_soft_state_fini(&ds1307_statep); return (error); } mutex_init(&todds1307_rd_lock, NULL, MUTEX_DEFAULT, NULL); return (0); }
int _init(void) { int error; if ((error = ddi_soft_state_init(&sbbcp, sizeof (sbbc_softstate_t), 1)) != 0) return (error); if ((error = mod_install(&modlinkage)) != 0) { ddi_soft_state_fini(&sbbcp); return (error); } /* * Initialise the global 'chosen' IOSRAM mutex */ mutex_init(&chosen_lock, NULL, MUTEX_DEFAULT, NULL); /* * Initialise the iosram driver */ iosram_init(); /* * Initialize the mailbox */ sbbc_mbox_init(); return (error); }
/* * Module initialization routines. */ int _init(void) { int error; /* Initialize soft state pointer. */ if ((error = ddi_soft_state_init(&acpinex_softstates, sizeof (acpinex_softstate_t), 8)) != 0) { cmn_err(CE_WARN, "acpinex: failed to initialize soft state structure."); return (error); } /* Initialize event subsystem. */ acpinex_event_init(); /* Install the module. */ if ((error = mod_install(&modlinkage)) != 0) { cmn_err(CE_WARN, "acpinex: failed to install module."); ddi_soft_state_fini(&acpinex_softstates); return (error); } mutex_init(&acpinex_lock, NULL, MUTEX_DRIVER, NULL); return (0); }
/* * One-time module-wide cleanup, after last detach is done. */ int _fini(void) { int rval; /* * Remove the module first as this operation is the only thing here * which can fail. */ rval = mod_remove(&ml); if (rval != DDI_SUCCESS) return (rval); if (iospc_leaf_grps != NULL) { iospc_kstat_fini(); mutex_enter(&iospc_mutex); iospc_kstat_inited = 0; (void) rfios_unbind_group(); iospc_leaf_grps = NULL; mutex_exit(&iospc_mutex); } mutex_destroy(&iospc_mutex); /* Free px soft state */ ddi_soft_state_fini(&iospc_state_p); return (DDI_SUCCESS); }
int _fini(void) { LogFlow((DEVICE_NAME ":_fini flow\n")); cmn_err(CE_NOTE, DEVICE_NAME ":_fini\n"); int rc = mod_remove(&g_VBoxVideoSolarisModLinkage); ddi_soft_state_fini(&g_pVBoxVideoSolarisState); return rc; }
int _fini(void) { int e; if ((e = mod_remove(&modlinkage)) == 0) ddi_soft_state_fini(&ppb_state); return (e); }
int _init(void) { int e; if ((e = ddi_soft_state_init(&ppb_state, sizeof (ppb_devstate_t), 1)) == 0 && (e = mod_install(&modlinkage)) != 0) ddi_soft_state_fini(&ppb_state); return (e); }
int _fini(void) { int err; if ((err = mod_remove(&modlinkage)) != 0) return (err); ddi_soft_state_fini(&cnex_state); return (0); }
int _fini(void) { int ret; if ((ret = mod_remove(&modlinkage)) == 0) { ddi_soft_state_fini(&agptarget_glob_soft_handle); } return (ret); }
int _fini(void) { int error; if ((error = mod_remove(&modlinkage)) == 0) { ddi_soft_state_fini(&sbusmem_state_head); } return (error); }
/** * Kernel entry points */ int _init(void) { int rc; LogFunc((DEVICE_NAME ":_init\n")); g_pDip = NULL; /* * Prevent module autounloading. */ modctl_t *pModCtl = mod_getctl(&g_VBoxUSBMonSolarisModLinkage); if (pModCtl) pModCtl->mod_loadflags |= MOD_NOAUTOUNLOAD; else LogRel((DEVICE_NAME ":failed to disable autounloading!\n")); /* * Initialize IPRT R0 driver, which internally calls OS-specific r0 init. */ rc = RTR0Init(0); if (RT_SUCCESS(rc)) { /* * Initialize global mutex. */ mutex_init(&g_VBoxUSBMonSolarisMtx, NULL, MUTEX_DRIVER, NULL); rc = VBoxUSBFilterInit(); if (RT_SUCCESS(rc)) { rc = ddi_soft_state_init(&g_pVBoxUSBMonSolarisState, sizeof(vboxusbmon_state_t), 1); if (!rc) { rc = mod_install(&g_VBoxUSBMonSolarisModLinkage); if (!rc) return rc; LogRel((DEVICE_NAME ":mod_install failed! rc=%d\n", rc)); ddi_soft_state_fini(&g_pVBoxUSBMonSolarisState); } else LogRel((DEVICE_NAME ":ddi_soft_state_init failed! rc=%d\n", rc)); } else LogRel((DEVICE_NAME ":VBoxUSBFilterInit failed! rc=%d\n", rc)); mutex_destroy(&g_VBoxUSBMonSolarisMtx); RTR0Term(); } else LogRel((DEVICE_NAME ":RTR0Init failed! rc=%d\n", rc)); return -1; }
int _fini(void) { int e; if ((e = mod_remove(&modlinkage)) != 0) { return (e); } ddi_soft_state_fini(&dstates); return (e); }
int _fini(void) { int retval; if ((retval = mod_remove(&modlinkage) != 0)) return retval; ddi_soft_state_fini(&qotd_state_head); return retval; }
int _fini(void) { int error; if ((error = mod_remove(&modlinkage)) == 0) { ddi_soft_state_fini(&usbser_keyspan_statep); } return (error); }
int _fini(void) { int err; err = mod_remove(&ics951601_modlinkage); if (err == 0) { ddi_soft_state_fini(&ics951601_soft_statep); } return (err); }
int _fini(void) { int rc; if ((rc = mod_remove(&pcn_modlinkage)) == DDI_SUCCESS) { mac_fini_ops(&pcn_devops); ddi_soft_state_fini(&pcn_ssp); } return (rc); }
/* * _fini - Module's fini routine. */ int _fini(void) { int ret; if ((ret = mod_remove(&modlinkage)) != 0) { return (ret); } ddi_soft_state_fini(&dm2s_softstate); return (ret); }
int _fini(void) { int error; error = mod_remove(<c1427_modlinkage); if (!error) ddi_soft_state_fini(<c1427soft_statep); return (error); }
int _fini(void) { int error; error = mod_remove(&pcf8574_modlinkage); if (!error) ddi_soft_state_fini(&pcf8574soft_statep); return (error); }
int _fini(void) { int error; if ((error = mod_remove(&modlinkage)) != 0) return (error); ddi_soft_state_fini(&simmstatp); return (0); }
int _fini(void) { int err; err = mod_remove(&pca9556_modlinkage); if (err == 0) { ddi_soft_state_fini(&pca9556_soft_statep); } return (err); }
int _fini(void) { int e; if ((e = mod_remove(&modlinkage)) != 0) { return (e); } ddi_soft_state_fini(&statep); return (DDI_SUCCESS); }
int _fini(void) { int rv; rv = mod_remove(&modlinkage); if (rv == DDI_SUCCESS) { rw_destroy(&bd_lock); ddi_soft_state_fini(&bd_state); } return (rv); }
int _fini(void) { int err; if ((err = mod_remove(&modlinkage)) == 0) { ddi_soft_state_fini(&rmc_comm_statep); rmc_comm_major = NOMAJOR; mutex_destroy(&rmc_comm_attach_lock); } return (err); }
int _fini(void) { int error; error = mod_remove(&virtionet_modlinkage); if (error == 0) { mac_fini_ops(&virtionet_devops); ddi_soft_state_fini(&virtionet_statep); } return (error); }