static int __init configfs_init(void) { int err = -ENOMEM; configfs_dir_cachep = kmem_cache_create("configfs_dir_cache", sizeof(struct configfs_dirent), 0, 0, NULL, NULL); if (!configfs_dir_cachep) goto out; kset_set_kset_s(&config_subsys, kernel_subsys); err = subsystem_register(&config_subsys); if (err) { kmem_cache_destroy(configfs_dir_cachep); configfs_dir_cachep = NULL; goto out; } err = register_filesystem(&configfs_fs_type); if (err) { printk(KERN_ERR "configfs: Unable to register filesystem!\n"); subsystem_unregister(&config_subsys); kmem_cache_destroy(configfs_dir_cachep); configfs_dir_cachep = NULL; } out: return err; }
static int __init hypfs_init(void) { int rc; if (MACHINE_IS_VM) { if (hypfs_vm_init()) /* no diag 2fc, just exit */ return -ENODATA; } else { if (hypfs_diag_init()) { rc = -ENODATA; goto fail_diag; } } kset_set_kset_s(&s390_subsys, hypervisor_subsys); rc = subsystem_register(&s390_subsys); if (rc) goto fail_sysfs; rc = register_filesystem(&hypfs_type); if (rc) goto fail_filesystem; return 0; fail_filesystem: subsystem_unregister(&s390_subsys); fail_sysfs: if (!MACHINE_IS_VM) hypfs_diag_exit(); fail_diag: printk(KERN_ERR "hypfs: Initialization failed with rc = %i.\n", rc); return rc; }
static int fuse_sysfs_init(void) { int err; kset_set_kset_s(&fuse_subsys, fs_subsys); err = subsystem_register(&fuse_subsys); if (err) goto out_err; kset_set_kset_s(&connections_subsys, fuse_subsys); err = subsystem_register(&connections_subsys); if (err) goto out_fuse_unregister; return 0; out_fuse_unregister: subsystem_unregister(&fuse_subsys); out_err: return err; }
static int __init debugfs_init(void) { int retval; kset_set_kset_s(&debug_subsys, kernel_subsys); retval = subsystem_register(&debug_subsys); if (retval) return retval; retval = register_filesystem(&debug_fs_type); if (retval) subsystem_unregister(&debug_subsys); return retval; }
static int __init securityfs_init(void) { int retval; kset_set_kset_s(&security_subsys, kernel_subsys); retval = subsystem_register(&security_subsys); if (retval) return retval; retval = register_filesystem(&fs_type); if (retval) subsystem_unregister(&security_subsys); return retval; }
/* * For now we register the stable subsystem with the firmware subsystem * and the paths subsystem with the stable subsystem */ static int __init pdc_stable_init(void) { struct subsys_attribute *attr; int i, rc = 0, error = 0; /* find the size of the stable storage */ if (pdc_stable_get_size(&pdcs_size) != PDC_OK) return -ENODEV; /* make sure we have enough data */ if (pdcs_size < 96) return -ENODATA; printk(KERN_INFO PDCS_PREFIX " facility v%s\n", PDCS_VERSION); /* For now we'll register the stable subsys within this driver */ if ((rc = firmware_register(&stable_subsys))) goto fail_firmreg; /* Don't forget the root entries */ for (i = 0; (attr = pdcs_subsys_attrs[i]) && !error; i++) if (attr->show) error = subsys_create_file(&stable_subsys, attr); /* register the paths subsys as a subsystem of stable subsys */ kset_set_kset_s(&paths_subsys, stable_subsys); if ((rc= subsystem_register(&paths_subsys))) goto fail_subsysreg; /* now we create all "files" for the paths subsys */ if ((rc = pdcs_register_pathentries())) goto fail_pdcsreg; return rc; fail_pdcsreg: pdcs_unregister_pathentries(); subsystem_unregister(&paths_subsys); fail_subsysreg: firmware_unregister(&stable_subsys); fail_firmreg: printk(KERN_INFO PDCS_PREFIX " bailing out\n"); return rc; }
int firmware_register(struct subsystem * s) { kset_set_kset_s(s, firmware_subsys); return subsystem_register(s); }