};
#ifndef CONFIG_PM
-decl_subsys(power,NULL,NULL);
+decl_subsys(power, NULL);
static struct attribute *g[] = {
&auto_poweron_attr.attr,
.show_options = hypfs_show_options,
};
-static decl_subsys(s390, NULL, NULL);
+static decl_subsys(s390, NULL);
static int __init hypfs_init(void)
{
goto fail_diag;
}
}
- kobj_set_kset_s(&s390_subsys, hypervisor_subsys);
+ s390_subsys.kobj.kset = &hypervisor_subsys;
rc = subsystem_register(&s390_subsys);
if (rc)
goto fail_sysfs;
.attrs = ipl_unknown_attrs,
};
-static decl_subsys(ipl, NULL, NULL);
+static decl_subsys(ipl, NULL);
/*
* reipl section
static struct subsys_attribute reipl_type_attr =
__ATTR(reipl_type, 0644, reipl_type_show, reipl_type_store);
-static decl_subsys(reipl, NULL, NULL);
+static decl_subsys(reipl, NULL);
/*
* dump section
static struct subsys_attribute dump_type_attr =
__ATTR(dump_type, 0644, dump_type_show, dump_type_store);
-static decl_subsys(dump, NULL, NULL);
+static decl_subsys(dump, NULL);
/*
* Shutdown actions section
*/
-static decl_subsys(shutdown_actions, NULL, NULL);
+static decl_subsys(shutdown_actions, NULL);
/* on panic */
.uevent = block_uevent,
};
-decl_subsys(block, &ktype_block, &block_uevent_ops);
+decl_subsys(block, &block_uevent_ops);
/*
* aggregate disk stat collector. Uses the same stats that the sysfs
}
}
disk->minors = minors;
- kobj_set_kset_s(disk,block_subsys);
+ disk->kobj.kset = &block_subsys;
+ disk->kobj.ktype = &ktype_block;
kobject_init(&disk->kobj);
rand_initialize_disk(disk);
INIT_WORK(&disk->async_notify,
return -ENODEV;
}
-decl_subsys(acpi, NULL, NULL);
+decl_subsys(acpi, NULL);
static int __init acpi_init(void)
{
.filter = bus_uevent_filter,
};
-static decl_subsys(bus, &bus_ktype, &bus_uevent_ops);
+static decl_subsys(bus, &bus_uevent_ops);
#ifdef CONFIG_HOTPLUG
if (error)
goto out_put_bus;
drv->kobj.kset = &bus->drivers;
+ drv->kobj.ktype = &driver_ktype;
error = kobject_register(&drv->kobj);
if (error)
goto out_put_bus;
goto out;
bus->subsys.kobj.kset = &bus_subsys;
+ bus->subsys.kobj.ktype = &bus_ktype;
retval = subsystem_register(&bus->subsys);
if (retval)
kobject_set_name(&bus->drivers.kobj, "drivers");
bus->drivers.kobj.parent = &bus->subsys.kobj;
- bus->drivers.ktype = &driver_ktype;
retval = kset_register(&bus->drivers);
if (retval)
goto bus_drivers_fail;
};
/* Hotplug events for classes go to the class_obj subsys */
-static decl_subsys(class, &class_ktype, NULL);
+static decl_subsys(class, NULL);
int class_create_file(struct class * cls, const struct class_attribute * attr)
return error;
cls->subsys.kobj.kset = &class_subsys;
+ cls->subsys.kobj.ktype = &class_ktype;
error = subsystem_register(&cls->subsys);
if (!error) {
.uevent = class_uevent,
};
-static decl_subsys(class_obj, &class_device_ktype, &class_uevent_ops);
+static decl_subsys(class_obj, &class_uevent_ops);
static int class_device_add_attrs(struct class_device * cd)
void class_device_initialize(struct class_device *class_dev)
{
- kobj_set_kset_s(class_dev, class_obj_subsys);
+ class_dev->kobj.kset = &class_obj_subsys;
+ class_dev->kobj.ktype = &class_device_ktype;
kobject_init(&class_dev->kobj);
INIT_LIST_HEAD(&class_dev->node);
}
* devices_subsys - structure to be registered with kobject core.
*/
-decl_subsys(devices, &device_ktype, &device_uevent_ops);
+decl_subsys(devices, &device_uevent_ops);
/**
void device_initialize(struct device *dev)
{
- kobj_set_kset_s(dev, devices_subsys);
+ dev->kobj.kset = &devices_subsys;
+ dev->kobj.ktype = &device_ktype;
kobject_init(&dev->kobj);
klist_init(&dev->klist_children, klist_children_get,
klist_children_put);
#include "base.h"
-static decl_subsys(firmware, NULL, NULL);
+static decl_subsys(firmware, NULL);
int firmware_register(struct kset *s)
{
- kobj_set_kset_s(s, firmware_subsys);
+ s->kobj.kset = &firmware_subsys;
+ s->kobj.ktype = NULL;
return subsystem_register(s);
}
#include "base.h"
-decl_subsys(hypervisor, NULL, NULL);
+decl_subsys(hypervisor, NULL);
EXPORT_SYMBOL_GPL(hypervisor_subsys);
int __init hypervisor_init(void)
/*
* declare system_subsys
*/
-static decl_subsys(system, &ktype_sysdev_class, NULL);
+static decl_subsys(system, NULL);
int sysdev_class_register(struct sysdev_class * cls)
{
kobject_name(&cls->kset.kobj));
INIT_LIST_HEAD(&cls->drivers);
cls->kset.kobj.parent = &system_subsys.kobj;
+ cls->kset.kobj.ktype = &ktype_sysdev_class;
cls->kset.kobj.kset = &system_subsys;
return kset_register(&cls->kset);
}
*/
static struct kset mc_kset = {
.kobj = {.ktype = &ktype_mc_set_attribs },
- .ktype = &ktype_mci,
};
/* this instance become part of the mc_kset */
kobj_mci->kset = &mc_kset;
+ kobj_mci->ktype = &ktype_mci;
/* set the name of the mc<id> object */
err = kobject_set_name(kobj_mci, "mc%d", mci->mc_idx);
.default_attrs = def_attrs,
};
-static decl_subsys(edd, &edd_ktype, NULL);
+static decl_subsys(edd, NULL);
/**
edd_dev_set_info(edev, i);
kobject_set_name(&edev->kobj, "int13_dev%02x",
0x80 + i);
- kobj_set_kset_s(edev,edd_subsys);
+ edev->kobj.kset = &edd_subsys;
+ edev->kobj.ktype = &edd_ktype;
error = kobject_register(&edev->kobj);
if (!error)
edd_populate_dir(edev);
NULL, /* maybe more in the future? */
};
-static decl_subsys(vars, &efivar_ktype, NULL);
-static decl_subsys(efi, NULL, NULL);
+static decl_subsys(vars, NULL);
+static decl_subsys(efi, NULL);
/*
* efivar_create_sysfs_entry()
efi_guid_unparse(vendor_guid, short_name + strlen(short_name));
kobject_set_name(&new_efivar->kobj, "%s", short_name);
- kobj_set_kset_s(new_efivar, vars_subsys);
+ new_efivar->kobj.kset = &vars_subsys;
+ new_efivar->kobj.ktype = &efivar_ktype;
i = kobject_register(&new_efivar->kobj);
if (i) {
kfree(short_name);
goto out_free;
}
- kobj_set_kset_s(&vars_subsys, efi_subsys);
+ vars_subsys.kobj.kset = &efi_subsys;
error = subsystem_register(&vars_subsys);
NULL,
};
-static decl_subsys(paths, &ktype_pdcspath, NULL);
-static decl_subsys(stable, NULL, NULL);
+static decl_subsys(paths, NULL);
+static decl_subsys(stable, NULL);
/**
* pdcs_register_pathentries - Prepares path entries kobjects for sysfs usage.
if ((err = kobject_set_name(&entry->kobj, "%s", entry->name)))
return err;
- kobj_set_kset_s(entry, paths_subsys);
+ entry->kobj.kset = &paths_subsys;
+ entry->kobj.ktype = &ktype_pdcspath;
if ((err = kobject_register(&entry->kobj)))
return err;
error = subsys_create_file(&stable_subsys, attr);
/* register the paths subsys as a subsystem of stable subsys */
- kobj_set_kset_s(&paths_subsys, stable_subsys);
+ paths_subsys.kobj.kset = &stable_subsys;
if ((rc = subsystem_register(&paths_subsys)))
goto fail_subsysreg;
.release = &hotplug_slot_release,
};
-decl_subsys_name(pci_hotplug_slots, slots, &hotplug_slot_ktype, NULL);
+decl_subsys_name(pci_hotplug_slots, slots, NULL);
/* these strings match up with the values in pci_bus_speed */
static char *pci_bus_speed_strings[] = {
}
kobject_set_name(&slot->kobj, "%s", slot->name);
- kobj_set_kset_s(slot, pci_hotplug_slots_subsys);
+ slot->kobj.kset = &pci_hotplug_slots_subsys;
+ slot->kobj.ktype = &hotplug_slot_ktype;
/* this can fail if we have already registered a slot with the same name */
if (kobject_register(&slot->kobj)) {
{
int result;
- kobj_set_kset_s(&pci_hotplug_slots_subsys, pci_bus_type.subsys);
+ pci_hotplug_slots_subsys.kobj.kset = &pci_bus_type.subsys;
result = subsystem_register(&pci_hotplug_slots_subsys);
if (result) {
err("Register subsys with error %d\n", result);
struct kset dlpar_io_kset = {
.kobj = {.ktype = &ktype_dlpar_io,
.parent = &pci_hotplug_slots_subsys.kobj},
- .ktype = &ktype_dlpar_io,
};
int dlpar_sysfs_init(void)
if (!map_found) {
map_found = 1;
kobject_set_name(&idev->map_attr_kset.kobj,"maps");
- idev->map_attr_kset.ktype = &map_attr_type;
+ idev->map_attr_kset.kobj.ktype = &map_attr_type;
idev->map_attr_kset.kobj.parent = &idev->dev->kobj;
ret = kset_register(&idev->map_attr_kset);
if (ret)
}
-static decl_subsys(config, NULL, NULL);
+static decl_subsys(config, NULL);
static int __init configfs_init(void)
{
if (!configfs_dir_cachep)
goto out;
- kobj_set_kset_s(&config_subsys, kernel_subsys);
+ config_subsys.kobj.kset = &kernel_subsys;
err = subsystem_register(&config_subsys);
if (err) {
kmem_cache_destroy(configfs_dir_cachep);
}
EXPORT_SYMBOL_GPL(debugfs_rename);
-static decl_subsys(debug, NULL, NULL);
+static decl_subsys(debug, NULL);
static int __init debugfs_init(void)
{
int retval;
- kobj_set_kset_s(&debug_subsys, kernel_subsys);
+ debug_subsys.kobj.kset = &kernel_subsys;
retval = subsystem_register(&debug_subsys);
if (retval)
return retval;
.release = lockspace_kobj_release,
};
-static struct kset dlm_kset = {
- .ktype = &dlm_ktype,
-};
+static struct kset dlm_kset;
static int kobject_setup(struct dlm_ls *ls)
{
spin_lock_init(&lslist_lock);
kobject_set_name(&dlm_kset.kobj, "dlm");
- kobj_set_kset_s(&dlm_kset, kernel_subsys);
+ dlm_kset.kobj.kset = &kernel_subsys;
error = kset_register(&dlm_kset);
if (error)
printk("dlm_lockspace_init: cannot register kset %d\n", error);
return 0;
}
-static decl_subsys(ecryptfs, NULL, NULL);
+static decl_subsys(ecryptfs, NULL);
static ssize_t version_show(struct kset *kset, char *buff)
{
{
int rc;
+ ecryptfs_subsys.kobj.kset = &fs_subsys;
rc = subsystem_register(&ecryptfs_subsys);
if (rc) {
printk(KERN_ERR
printk(KERN_ERR "Failed to register filesystem\n");
goto out_free_kmem_caches;
}
- kobj_set_kset_s(&ecryptfs_subsys, fs_subsys);
rc = do_sysfs_registration();
if (rc) {
printk(KERN_ERR "sysfs registration failed\n");
}
#endif
-static decl_subsys(fuse, NULL, NULL);
-static decl_subsys(connections, NULL, NULL);
+static decl_subsys(fuse, NULL);
+static decl_subsys(connections, NULL);
static void fuse_inode_init_once(struct kmem_cache *cachep, void *foo)
{
{
int err;
- kobj_set_kset_s(&fuse_subsys, fs_subsys);
+ fuse_subsys.kobj.kset = &fs_subsys;
err = subsystem_register(&fuse_subsys);
if (err)
goto out_err;
- kobj_set_kset_s(&connections_subsys, fuse_subsys);
+ connections_subsys.kobj.kset = &fuse_subsys;
err = subsystem_register(&connections_subsys);
if (err)
goto out_fuse_unregister;
.sysfs_ops = &gdlm_attr_ops,
};
-static struct kset gdlm_kset = {
- .ktype = &gdlm_ktype,
-};
+static struct kset gdlm_kset;
int gdlm_kobject_setup(struct gdlm_ls *ls, struct kobject *fskobj)
{
int error;
kobject_set_name(&gdlm_kset.kobj, "lock_dlm");
- kobj_set_kset_s(&gdlm_kset, kernel_subsys);
+ gdlm_kset.kobj.kset = &kernel_subsys;
error = kset_register(&gdlm_kset);
if (error)
printk("lock_dlm: cannot register kset %d\n", error);
.sysfs_ops = &gfs2_attr_ops,
};
-static struct kset gfs2_kset = {
- .ktype = &gfs2_ktype,
-};
+static struct kset gfs2_kset;
/*
* display struct lm_lockstruct fields
gfs2_sys_margs = NULL;
spin_lock_init(&gfs2_sys_margs_lock);
kobject_set_name(&gfs2_kset.kobj, "gfs2");
- kobj_set_kset_s(&gfs2_kset, fs_subsys);
+ gfs2_kset.kobj.kset = &fs_subsys;
return kset_register(&gfs2_kset);
}
static struct rw_semaphore namespace_sem;
/* /sys/fs */
-decl_subsys(fs, NULL, NULL);
+decl_subsys(fs, NULL);
EXPORT_SYMBOL_GPL(fs_subsys);
static inline unsigned long hash(struct vfsmount *mnt, struct dentry *dentry)
mlog_attr_ptrs[i] = NULL;
kobject_set_name(&mlog_kset.kobj, "logmask");
- kobj_set_kset_s(&mlog_kset, *o2cb_subsys);
+ mlog_kset.kobj.kset = o2cb_subsys;
return kset_register(&mlog_kset);
}
};
/* gives us o2cb_subsys */
-static decl_subsys(o2cb, NULL, NULL);
+static decl_subsys(o2cb, NULL);
static ssize_t
o2cb_show(struct kobject * kobj, struct attribute * attr, char * buffer)
/* if the kobject has no ktype, then we assume that it is a subsystem
* itself, and use ops for it.
*/
- if (kobj->kset && kobj->kset->ktype)
- ops = kobj->kset->ktype->sysfs_ops;
- else if (kobj->ktype)
+ if (kobj->ktype)
ops = kobj->ktype->sysfs_ops;
else
ops = &subsys_sysfs_ops;
* define the attribute callbacks and other common events that happen to
* a kobject.
*
- * @ktype: the struct kobj_type for this specific kset
* @list: the list of all kobjects for this kset
* @list_lock: a lock for iterating over the kobjects
* @kobj: the embedded kobject for this kset (recursion, isn't it fun...)
* desired.
*/
struct kset {
- struct kobj_type *ktype;
struct list_head list;
spinlock_t list_lock;
struct kobject kobj;
kobject_put(&k->kobj);
}
-static inline struct kobj_type * get_ktype(struct kobject * k)
+static inline struct kobj_type *get_ktype(struct kobject *kobj)
{
- if (k->kset && k->kset->ktype)
- return k->kset->ktype;
- else
- return k->ktype;
+ return kobj->ktype;
}
extern struct kobject * kset_find_obj(struct kset *, const char *);
#define set_kset_name(str) .kset = { .kobj = { .k_name = str } }
-#define decl_subsys(_name,_type,_uevent_ops) \
+#define decl_subsys(_name,_uevent_ops) \
struct kset _name##_subsys = { \
.kobj = { .k_name = __stringify(_name) }, \
- .ktype = _type, \
.uevent_ops =_uevent_ops, \
}
-#define decl_subsys_name(_varname,_name,_type,_uevent_ops) \
+#define decl_subsys_name(_varname,_name,_uevent_ops) \
struct kset _varname##_subsys = { \
.kobj = { .k_name = __stringify(_name) }, \
- .ktype = _type, \
.uevent_ops =_uevent_ops, \
}
.read = ¬es_read,
};
-decl_subsys(kernel, NULL, NULL);
+decl_subsys(kernel, NULL);
EXPORT_SYMBOL_GPL(kernel_subsys);
static struct attribute * kernel_attrs[] = {
err = kobject_set_name(&mod->mkobj.kobj, "%s", mod->name);
if (err)
goto out;
- kobj_set_kset_s(&mod->mkobj, module_subsys);
+ mod->mkobj.kobj.kset = &module_subsys;
mod->mkobj.mod = mod;
kobject_init(&mod->mkobj.kobj);
#define DEBUGP(fmt, a...)
#endif
+static struct kobj_type module_ktype;
+
static inline char dash2underscore(char c)
{
if (c == '-')
BUG_ON(!mk);
mk->mod = THIS_MODULE;
- kobj_set_kset_s(mk, module_subsys);
+ mk->kobj.kset = &module_subsys;
+ mk->kobj.ktype = &module_ktype;
kobject_set_name(&mk->kobj, name);
kobject_init(&mk->kobj);
ret = kobject_add(&mk->kobj);
.store = module_attr_store,
};
-static struct kobj_type module_ktype;
-
static int uevent_filter(struct kset *kset, struct kobject *kobj)
{
struct kobj_type *ktype = get_ktype(kobj);
.filter = uevent_filter,
};
-decl_subsys(module, &module_ktype, &module_uevent_ops);
+decl_subsys(module, &module_uevent_ops);
int module_sysfs_initialized;
static void module_release(struct kobject *kobj)
#endif /* CONFIG_SUSPEND */
-decl_subsys(power,NULL,NULL);
+decl_subsys(power, NULL);
/**
.filter = uevent_filter,
};
-static decl_subsys(slab, &slab_ktype, &slab_uevent_ops);
+static decl_subsys(slab, &slab_uevent_ops);
#define ID_STR_LENGTH 64
name = create_unique_id(s);
}
- kobj_set_kset_s(s, slab_subsys);
kobject_set_name(&s->kobj, name);
+ s->kobj.kset = &slab_subsys;
+ s->kobj.ktype = &slab_ktype;
kobject_init(&s->kobj);
err = kobject_add(&s->kobj);
if (err)
}
EXPORT_SYMBOL_GPL(securityfs_remove);
-static decl_subsys(security, NULL, NULL);
+static decl_subsys(security, NULL);
static int __init securityfs_init(void)
{
int retval;
- kobj_set_kset_s(&security_subsys, kernel_subsys);
+ security_subsys.kobj.kset = &kernel_subsys;
retval = subsystem_register(&security_subsys);
if (retval)
return retval;