/** * dtbocfg_module_init() */ static int __init dtbocfg_module_init(void) { int retval = 0; pr_info("%s\n", __func__); config_group_init(&dtbocfg_root_subsys.su_group); config_group_init_type_name(&dtbocfg_overlay_group, "overlays", &dtbocfg_overlays_type); retval = configfs_register_subsystem(&dtbocfg_root_subsys); if (retval != 0) { pr_err( "%s: couldn't register subsys\n", __func__); goto register_subsystem_failed; } retval = configfs_register_group(&dtbocfg_root_subsys.su_group, &dtbocfg_overlay_group); if (retval != 0) { pr_err( "%s: couldn't register group\n", __func__); goto register_group_failed; } pr_info("%s: OK\n", __func__); return 0; register_group_failed: configfs_unregister_subsystem(&dtbocfg_root_subsys); register_subsystem_failed: return retval; }
void uninit_configfs_setup(void) { int i; for (i = 0; configfs_subsys[i]; i++) configfs_unregister_subsystem(configfs_subsys[i]); }
void init_configfs_setup(void) { int ret; int i; struct configfs_subsystem *subsys; for (i = 0; configfs_subsys[i]; i++) { subsys = configfs_subsys[i]; config_group_init(&subsys->su_group); mutex_init(&subsys->su_mutex); ret = configfs_register_subsystem(subsys); if (ret) { PRINTK_ERROR("Error %d while registering subsystem %s\n", ret, subsys->su_group.cg_item.ci_namebuf); goto out_unregister; } } return; out_unregister: for (i--; i >= 0; i--) configfs_unregister_subsystem(configfs_subsys[i]); }
static void __exit gpiommc_modexit(void) { #ifdef CONFIG_GPIOMMC_CONFIGFS configfs_unregister_subsystem(&gpiommc_subsys); #endif platform_driver_unregister(&gpiommc_plat_driver); }
static void __exit dynamic_netconsole_exit(void) { configfs_unregister_subsystem(&netconsole_subsys); }
static void __exit iio_configfs_exit(void) { configfs_unregister_subsystem(&iio_configfs_subsys); }
/** * dtbocfg_module_exit() */ static void __exit dtbocfg_module_exit(void) { configfs_unregister_group(&dtbocfg_overlay_group); configfs_unregister_subsystem(&dtbocfg_root_subsys); }