diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
commit | ada47b5fe13d89735805b566185f4885f5a3f750 (patch) | |
tree | 644b88f8a71896307d71438e9b3af49126ffb22b /drivers/base/sys.c | |
parent | 43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff) | |
parent | 3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff) |
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'drivers/base/sys.c')
-rw-r--r-- | drivers/base/sys.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/base/sys.c b/drivers/base/sys.c index 0d903909af7e..9354dc10a363 100644 --- a/drivers/base/sys.c +++ b/drivers/base/sys.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/module.h> | 17 | #include <linux/module.h> |
18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/slab.h> | ||
21 | #include <linux/string.h> | 20 | #include <linux/string.h> |
22 | #include <linux/pm.h> | 21 | #include <linux/pm.h> |
23 | #include <linux/device.h> | 22 | #include <linux/device.h> |
@@ -54,7 +53,7 @@ sysdev_store(struct kobject *kobj, struct attribute *attr, | |||
54 | return -EIO; | 53 | return -EIO; |
55 | } | 54 | } |
56 | 55 | ||
57 | static struct sysfs_ops sysfs_ops = { | 56 | static const struct sysfs_ops sysfs_ops = { |
58 | .show = sysdev_show, | 57 | .show = sysdev_show, |
59 | .store = sysdev_store, | 58 | .store = sysdev_store, |
60 | }; | 59 | }; |
@@ -89,7 +88,7 @@ static ssize_t sysdev_class_show(struct kobject *kobj, struct attribute *attr, | |||
89 | struct sysdev_class_attribute *class_attr = to_sysdev_class_attr(attr); | 88 | struct sysdev_class_attribute *class_attr = to_sysdev_class_attr(attr); |
90 | 89 | ||
91 | if (class_attr->show) | 90 | if (class_attr->show) |
92 | return class_attr->show(class, buffer); | 91 | return class_attr->show(class, class_attr, buffer); |
93 | return -EIO; | 92 | return -EIO; |
94 | } | 93 | } |
95 | 94 | ||
@@ -100,11 +99,11 @@ static ssize_t sysdev_class_store(struct kobject *kobj, struct attribute *attr, | |||
100 | struct sysdev_class_attribute *class_attr = to_sysdev_class_attr(attr); | 99 | struct sysdev_class_attribute *class_attr = to_sysdev_class_attr(attr); |
101 | 100 | ||
102 | if (class_attr->store) | 101 | if (class_attr->store) |
103 | return class_attr->store(class, buffer, count); | 102 | return class_attr->store(class, class_attr, buffer, count); |
104 | return -EIO; | 103 | return -EIO; |
105 | } | 104 | } |
106 | 105 | ||
107 | static struct sysfs_ops sysfs_class_ops = { | 106 | static const struct sysfs_ops sysfs_class_ops = { |
108 | .show = sysdev_class_show, | 107 | .show = sysdev_class_show, |
109 | .store = sysdev_class_store, | 108 | .store = sysdev_class_store, |
110 | }; | 109 | }; |
@@ -145,13 +144,20 @@ int sysdev_class_register(struct sysdev_class *cls) | |||
145 | if (retval) | 144 | if (retval) |
146 | return retval; | 145 | return retval; |
147 | 146 | ||
148 | return kset_register(&cls->kset); | 147 | retval = kset_register(&cls->kset); |
148 | if (!retval && cls->attrs) | ||
149 | retval = sysfs_create_files(&cls->kset.kobj, | ||
150 | (const struct attribute **)cls->attrs); | ||
151 | return retval; | ||
149 | } | 152 | } |
150 | 153 | ||
151 | void sysdev_class_unregister(struct sysdev_class *cls) | 154 | void sysdev_class_unregister(struct sysdev_class *cls) |
152 | { | 155 | { |
153 | pr_debug("Unregistering sysdev class '%s'\n", | 156 | pr_debug("Unregistering sysdev class '%s'\n", |
154 | kobject_name(&cls->kset.kobj)); | 157 | kobject_name(&cls->kset.kobj)); |
158 | if (cls->attrs) | ||
159 | sysfs_remove_files(&cls->kset.kobj, | ||
160 | (const struct attribute **)cls->attrs); | ||
155 | kset_unregister(&cls->kset); | 161 | kset_unregister(&cls->kset); |
156 | } | 162 | } |
157 | 163 | ||