}
static struct kobj_type dynamic_kobj_ktype = {
- .release = dynamic_kobj_release,
+ .release = dynamic_kobj_release,
+ .sysfs_ops = &kobj_sysfs_ops,
};
/**
kset_unregister(s);
}
-/**
- * subsystem_create_file - export sysfs attribute file.
- * @s: subsystem.
- * @a: subsystem attribute descriptor.
- */
-
-int subsys_create_file(struct kset *s, struct subsys_attribute *a)
-{
- int error = 0;
-
- if (!s || !a)
- return -EINVAL;
-
- if (kset_get(s)) {
- error = sysfs_create_file(&s->kobj, &a->attr);
- kset_put(s);
- }
- return error;
-}
-
static void kset_release(struct kobject *kobj)
{
struct kset *kset = container_of(kobj, struct kset, kobj);
kfree(kset);
}
-static struct kobj_type kset_type = {
+static struct kobj_type kset_ktype = {
+ .sysfs_ops = &kobj_sysfs_ops,
.release = kset_release,
};
kset->kobj.parent = parent_kobj;
/*
- * The kobject of this kset will have a type of kset_type and belong to
+ * The kobject of this kset will have a type of kset_ktype and belong to
* no kset itself. That way we can properly free it when it is
* finished being used.
*/
- kset->kobj.ktype = &kset_type;
+ kset->kobj.ktype = &kset_ktype;
kset->kobj.kset = NULL;
return kset;
EXPORT_SYMBOL(subsystem_register);
EXPORT_SYMBOL(subsystem_unregister);
-EXPORT_SYMBOL(subsys_create_file);