Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
[safe/jmp/linux-2.6] / include / linux / sysdev.h
index 166a2e5..f2767bc 100644 (file)
 #define _SYSDEV_H_
 
 #include <linux/kobject.h>
+#include <linux/module.h>
 #include <linux/pm.h>
 
 
 struct sys_device;
 
 struct sysdev_class {
+       const char *name;
        struct list_head        drivers;
 
        /* Default operations for these types of devices */
@@ -43,12 +45,16 @@ struct sysdev_class_attribute {
        ssize_t (*store)(struct sysdev_class *, const char *, size_t);
 };
 
-#define SYSDEV_CLASS_ATTR(_name,_mode,_show,_store)            \
-struct sysdev_class_attribute attr_##_name = {                         \
+#define _SYSDEV_CLASS_ATTR(_name,_mode,_show,_store)           \
+{                                                              \
        .attr = {.name = __stringify(_name), .mode = _mode },   \
        .show   = _show,                                        \
        .store  = _store,                                       \
-};
+}
+
+#define SYSDEV_CLASS_ATTR(_name,_mode,_show,_store)            \
+       struct sysdev_class_attribute attr_##_name =            \
+               _SYSDEV_CLASS_ATTR(_name,_mode,_show,_store)
 
 
 extern int sysdev_class_register(struct sysdev_class *);
@@ -98,12 +104,16 @@ struct sysdev_attribute {
 };
 
 
-#define SYSDEV_ATTR(_name,_mode,_show,_store)          \
-struct sysdev_attribute attr_##_name = {                       \
-       .attr = {.name = __stringify(_name), .mode = _mode },   \
+#define _SYSDEV_ATTR(_name, _mode, _show, _store)              \
+{                                                              \
+       .attr = { .name = __stringify(_name), .mode = _mode },  \
        .show   = _show,                                        \
        .store  = _store,                                       \
-};
+}
+
+#define SYSDEV_ATTR(_name, _mode, _show, _store)               \
+       struct sysdev_attribute attr_##_name =                  \
+               _SYSDEV_ATTR(_name, _mode, _show, _store);
 
 extern int sysdev_create_file(struct sys_device *, struct sysdev_attribute *);
 extern void sysdev_remove_file(struct sys_device *, struct sysdev_attribute *);