#include <linux/slab.h>
#include <linux/list.h>
#include <linux/module.h>
+#include <linux/mutex.h>
#include "base.h"
}
EXPORT_SYMBOL_GPL(attribute_container_classdev_to_container);
-static struct list_head attribute_container_list;
+static LIST_HEAD(attribute_container_list);
static DEFINE_MUTEX(attribute_container_mutex);
struct class_device_attribute **attrs = cont->attrs;
int i, error;
- if (!attrs)
+ BUG_ON(attrs && cont->grp);
+
+ if (!attrs && !cont->grp)
return 0;
+ if (cont->grp)
+ return sysfs_create_group(&classdev->kobj, cont->grp);
+
for (i = 0; attrs[i]; i++) {
error = class_device_create_file(classdev, attrs[i]);
if (error)
struct class_device_attribute **attrs = cont->attrs;
int i;
- if (!attrs)
+ if (!attrs && !cont->grp)
return;
+ if (cont->grp) {
+ sysfs_remove_group(&classdev->kobj, cont->grp);
+ return ;
+ }
+
for (i = 0; attrs[i]; i++)
class_device_remove_file(classdev, attrs[i]);
}
return cdev;
}
EXPORT_SYMBOL_GPL(attribute_container_find_class_device);
-
-int __init
-attribute_container_init(void)
-{
- INIT_LIST_HEAD(&attribute_container_list);
- return 0;
-}