|
@@ -385,6 +385,44 @@ void kobject_put(struct kobject * kobj)
|
|
|
}
|
|
|
|
|
|
|
|
|
+static void dir_release(struct kobject *kobj)
|
|
|
+{
|
|
|
+ kfree(kobj);
|
|
|
+}
|
|
|
+
|
|
|
+static struct kobj_type dir_ktype = {
|
|
|
+ .release = dir_release,
|
|
|
+ .sysfs_ops = NULL,
|
|
|
+ .default_attrs = NULL,
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * kobject_add_dir - add sub directory of object.
|
|
|
+ * @parent: object in which a directory is created.
|
|
|
+ * @name: directory name.
|
|
|
+ *
|
|
|
+ * Add a plain directory object as child of given object.
|
|
|
+ */
|
|
|
+struct kobject *kobject_add_dir(struct kobject *parent, const char *name)
|
|
|
+{
|
|
|
+ struct kobject *k;
|
|
|
+
|
|
|
+ if (!parent)
|
|
|
+ return NULL;
|
|
|
+
|
|
|
+ k = kzalloc(sizeof(*k), GFP_KERNEL);
|
|
|
+ if (!k)
|
|
|
+ return NULL;
|
|
|
+
|
|
|
+ k->parent = parent;
|
|
|
+ k->ktype = &dir_ktype;
|
|
|
+ kobject_set_name(k, name);
|
|
|
+ kobject_register(k);
|
|
|
+
|
|
|
+ return k;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(kobject_add_dir);
|
|
|
+
|
|
|
/**
|
|
|
* kset_init - initialize a kset for use
|
|
|
* @k: kset
|