diff options
Diffstat (limited to 'include/linux/sysfs.h')
| -rw-r--r-- | include/linux/sysfs.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h index 3e8526582146..006c359e63c0 100644 --- a/include/linux/sysfs.h +++ b/include/linux/sysfs.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #include <linux/compiler.h> | 15 | #include <linux/compiler.h> |
| 16 | #include <linux/errno.h> | 16 | #include <linux/errno.h> |
| 17 | #include <linux/list.h> | 17 | #include <linux/list.h> |
| 18 | #include <linux/lockdep.h> | ||
| 18 | #include <asm/atomic.h> | 19 | #include <asm/atomic.h> |
| 19 | 20 | ||
| 20 | struct kobject; | 21 | struct kobject; |
| @@ -29,8 +30,23 @@ struct attribute { | |||
| 29 | const char *name; | 30 | const char *name; |
| 30 | struct module *owner; | 31 | struct module *owner; |
| 31 | mode_t mode; | 32 | mode_t mode; |
| 33 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | ||
| 34 | struct lock_class_key *key; | ||
| 35 | struct lock_class_key skey; | ||
| 36 | #endif | ||
| 32 | }; | 37 | }; |
| 33 | 38 | ||
| 39 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | ||
| 40 | #define sysfs_attr_init(attr) \ | ||
| 41 | do { \ | ||
| 42 | static struct lock_class_key __key; \ | ||
| 43 | \ | ||
| 44 | (attr)->key = &__key; \ | ||
| 45 | } while(0) | ||
| 46 | #else | ||
| 47 | #define sysfs_attr_init(attr) do {} while(0) | ||
| 48 | #endif | ||
| 49 | |||
| 34 | struct attribute_group { | 50 | struct attribute_group { |
| 35 | const char *name; | 51 | const char *name; |
| 36 | mode_t (*is_visible)(struct kobject *, | 52 | mode_t (*is_visible)(struct kobject *, |
| @@ -74,6 +90,8 @@ struct bin_attribute { | |||
| 74 | struct vm_area_struct *vma); | 90 | struct vm_area_struct *vma); |
| 75 | }; | 91 | }; |
| 76 | 92 | ||
| 93 | #define sysfs_bin_attr_init(bin_attr) sysfs_attr_init(&bin_attr->attr) | ||
| 94 | |||
| 77 | struct sysfs_ops { | 95 | struct sysfs_ops { |
| 78 | ssize_t (*show)(struct kobject *, struct attribute *,char *); | 96 | ssize_t (*show)(struct kobject *, struct attribute *,char *); |
| 79 | ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t); | 97 | ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t); |
