diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-01-01 21:09:16 -0500 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-01-04 16:28:59 -0500 |
commit | a1e9ca6967d68209c70e616a224efa89a6b86ca6 (patch) | |
tree | 5de17c38e1f91798105a401d8cbfe84e63f6eeae | |
parent | 013c074f8642d8e815ad670601f8e27155a74b57 (diff) |
PM / sleep: Add support for read-only sysfs attributes
Some sysfs attributes in /sys/power/ should really be read-only,
so add support for that, convert those attributes to read-only
and drop the stub .show() routines from them.
Original-by: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r-- | kernel/power/main.c | 17 | ||||
-rw-r--r-- | kernel/power/power.h | 9 |
2 files changed, 11 insertions, 15 deletions
diff --git a/kernel/power/main.c b/kernel/power/main.c index b2dd4d999900..27946975eff0 100644 --- a/kernel/power/main.c +++ b/kernel/power/main.c | |||
@@ -280,13 +280,7 @@ static ssize_t pm_wakeup_irq_show(struct kobject *kobj, | |||
280 | return pm_wakeup_irq ? sprintf(buf, "%u\n", pm_wakeup_irq) : -ENODATA; | 280 | return pm_wakeup_irq ? sprintf(buf, "%u\n", pm_wakeup_irq) : -ENODATA; |
281 | } | 281 | } |
282 | 282 | ||
283 | static ssize_t pm_wakeup_irq_store(struct kobject *kobj, | 283 | power_attr_ro(pm_wakeup_irq); |
284 | struct kobj_attribute *attr, | ||
285 | const char *buf, size_t n) | ||
286 | { | ||
287 | return -EINVAL; | ||
288 | } | ||
289 | power_attr(pm_wakeup_irq); | ||
290 | 284 | ||
291 | #else /* !CONFIG_PM_SLEEP_DEBUG */ | 285 | #else /* !CONFIG_PM_SLEEP_DEBUG */ |
292 | static inline void pm_print_times_init(void) {} | 286 | static inline void pm_print_times_init(void) {} |
@@ -564,14 +558,7 @@ static ssize_t pm_trace_dev_match_show(struct kobject *kobj, | |||
564 | return show_trace_dev_match(buf, PAGE_SIZE); | 558 | return show_trace_dev_match(buf, PAGE_SIZE); |
565 | } | 559 | } |
566 | 560 | ||
567 | static ssize_t | 561 | power_attr_ro(pm_trace_dev_match); |
568 | pm_trace_dev_match_store(struct kobject *kobj, struct kobj_attribute *attr, | ||
569 | const char *buf, size_t n) | ||
570 | { | ||
571 | return -EINVAL; | ||
572 | } | ||
573 | |||
574 | power_attr(pm_trace_dev_match); | ||
575 | 562 | ||
576 | #endif /* CONFIG_PM_TRACE */ | 563 | #endif /* CONFIG_PM_TRACE */ |
577 | 564 | ||
diff --git a/kernel/power/power.h b/kernel/power/power.h index caadb566e82b..efe1b3b17c88 100644 --- a/kernel/power/power.h +++ b/kernel/power/power.h | |||
@@ -77,6 +77,15 @@ static struct kobj_attribute _name##_attr = { \ | |||
77 | .store = _name##_store, \ | 77 | .store = _name##_store, \ |
78 | } | 78 | } |
79 | 79 | ||
80 | #define power_attr_ro(_name) \ | ||
81 | static struct kobj_attribute _name##_attr = { \ | ||
82 | .attr = { \ | ||
83 | .name = __stringify(_name), \ | ||
84 | .mode = S_IRUGO, \ | ||
85 | }, \ | ||
86 | .show = _name##_show, \ | ||
87 | } | ||
88 | |||
80 | /* Preferred image size in bytes (default 500 MB) */ | 89 | /* Preferred image size in bytes (default 500 MB) */ |
81 | extern unsigned long image_size; | 90 | extern unsigned long image_size; |
82 | /* Size of memory reserved for drivers (default SPARE_PAGES x PAGE_SIZE) */ | 91 | /* Size of memory reserved for drivers (default SPARE_PAGES x PAGE_SIZE) */ |