/* * scst_module.c * * Copyright (C) 2004 - 2018 Vladislav Bolkhovitin * Copyright (C) 2004 - 2005 Leonid Stoljar * Copyright (C) 2007 - 2018 Western Digital Corporation * * Support for loading target modules. The usage is similar to scsi_module.c * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include #include #include static int __init init_this_scst_driver(void) { int res; TRACE_ENTRY(); res = scst_register_target_template(&driver_target_template); TRACE_DBG("scst_register_target_template() returned %d", res); if (res < 0) goto out; #ifdef SCST_REGISTER_INITIATOR_DRIVER driver_template.module = THIS_MODULE; scsi_register_module(MODULE_SCSI_HA, &driver_template); TRACE_DBG("driver_template.present=%d", driver_template.present); if (driver_template.present == 0) { res = -ENODEV; MOD_DEC_USE_COUNT; goto out; } #endif out: TRACE_EXIT_RES(res); return res; } static void __exit exit_this_scst_driver(void) { TRACE_ENTRY(); #ifdef SCST_REGISTER_INITIATOR_DRIVER scsi_unregister_module(MODULE_SCSI_HA, &driver_template); #endif scst_unregister_target_template(&driver_target_template); TRACE_EXIT(); return; } module_init(init_this_scst_driver); module_exit(exit_this_scst_driver);