diff options
author | Andi Kleen <andi@firstfloor.org> | 2008-07-01 12:48:41 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-07-22 00:55:02 -0400 |
commit | 4a0b2b4dbe1335b8b9886ba3dc85a145d5d938ed (patch) | |
tree | c2d3a0f86ade5061a1bb9a14aa702323d729fd54 /kernel/sched.c | |
parent | 36ce6dad6e3cb3f050ed41e0beac0070d2062b25 (diff) |
sysdev: Pass the attribute to the low level sysdev show/store function
This allow to dynamically generate attributes and share show/store
functions between attributes. Right now most attributes are generated
by special macros and lots of duplicated code. With the attribute
passed it's instead possible to attach some data to the attribute
and then use that in shared low level functions to do different things.
I need this for the dynamically generated bank attributes in the x86
machine check code, but it'll allow some further cleanups.
I converted all users in tree to the new show/store prototype. It's a single
huge patch to avoid unbisectable sections.
Runtime tested: x86-32, x86-64
Compiled only: ia64, powerpc
Not compile tested/only grep converted: sh, arm, avr32
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 99e6d850ecab..b1104ea5d255 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -7737,11 +7737,13 @@ static ssize_t sched_power_savings_store(const char *buf, size_t count, int smt) | |||
7737 | } | 7737 | } |
7738 | 7738 | ||
7739 | #ifdef CONFIG_SCHED_MC | 7739 | #ifdef CONFIG_SCHED_MC |
7740 | static ssize_t sched_mc_power_savings_show(struct sys_device *dev, char *page) | 7740 | static ssize_t sched_mc_power_savings_show(struct sys_device *dev, |
7741 | struct sysdev_attribute *attr, char *page) | ||
7741 | { | 7742 | { |
7742 | return sprintf(page, "%u\n", sched_mc_power_savings); | 7743 | return sprintf(page, "%u\n", sched_mc_power_savings); |
7743 | } | 7744 | } |
7744 | static ssize_t sched_mc_power_savings_store(struct sys_device *dev, | 7745 | static ssize_t sched_mc_power_savings_store(struct sys_device *dev, |
7746 | struct sysdev_attribute *attr, | ||
7745 | const char *buf, size_t count) | 7747 | const char *buf, size_t count) |
7746 | { | 7748 | { |
7747 | return sched_power_savings_store(buf, count, 0); | 7749 | return sched_power_savings_store(buf, count, 0); |
@@ -7751,11 +7753,13 @@ static SYSDEV_ATTR(sched_mc_power_savings, 0644, sched_mc_power_savings_show, | |||
7751 | #endif | 7753 | #endif |
7752 | 7754 | ||
7753 | #ifdef CONFIG_SCHED_SMT | 7755 | #ifdef CONFIG_SCHED_SMT |
7754 | static ssize_t sched_smt_power_savings_show(struct sys_device *dev, char *page) | 7756 | static ssize_t sched_smt_power_savings_show(struct sys_device *dev, |
7757 | struct sysdev_attribute *attr, char *page) | ||
7755 | { | 7758 | { |
7756 | return sprintf(page, "%u\n", sched_smt_power_savings); | 7759 | return sprintf(page, "%u\n", sched_smt_power_savings); |
7757 | } | 7760 | } |
7758 | static ssize_t sched_smt_power_savings_store(struct sys_device *dev, | 7761 | static ssize_t sched_smt_power_savings_store(struct sys_device *dev, |
7762 | struct sysdev_attribute *attr, | ||
7759 | const char *buf, size_t count) | 7763 | const char *buf, size_t count) |
7760 | { | 7764 | { |
7761 | return sched_power_savings_store(buf, count, 1); | 7765 | return sched_power_savings_store(buf, count, 1); |