[PATCH/RFC 2/5] [PATCH] sched: pass sched_domain_level to sched_power_savings_store

Heiko Carstens
2010-08-12T17:25:34Z

[-- Attachment #1: 02-sched-powersavings.diff --]
[-- Type: text/plain, Size: 2037 bytes --]

From: Heiko Carstens <heiko.carstens@de.ibm.com>

Pass the corresponding sched domain level to sched_power_savings_store instead
of a yes/no flag which indicates if the level is SMT or MC.
This is needed to easily extend the function so it can be used for a third
level.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
---

kernel/sched.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)

diff -urpN linux-2.6/kernel/sched.c linux-2.6-patched/kernel/sched.c
--- linux-2.6/kernel/sched.c 2010-08-11 13:47:22.000000000 +0200
+++ linux-2.6-patched/kernel/sched.c 2010-08-11 13:47:22.000000000 +0200
@@ -7380,7 +7380,8 @@ static void arch_reinit_sched_domains(vo
put_online_cpus();
}

-static ssize_t sched_power_savings_store(const char *buf, size_t count, int smt)
+static ssize_t sched_power_savings_store(const char *buf, size_t count,
+ enum sched_domain_level sd_level)
{
unsigned int level = 0;

@@ -7397,10 +7398,16 @@ static ssize_t sched_power_savings_store
if (level >= MAX_POWERSAVINGS_BALANCE_LEVELS)
return -EINVAL;

- if (smt)
+ switch (sd_level) {
+ case SD_LV_SIBLING:
sched_smt_power_savings = level;
- else
+ break;
+ case SD_LV_MC:
sched_mc_power_savings = level;
+ break;
+ default:
+ break;
+ }

arch_reinit_sched_domains();

@@ -7418,7 +7425,7 @@ static ssize_t sched_mc_power_savings_st
struct sysdev_class_attribute *attr,
const char *buf, size_t count)
{
- return sched_power_savings_store(buf, count, 0);
+ return sched_power_savings_store(buf, count, SD_LV_MC);
}
static SYSDEV_CLASS_ATTR(sched_mc_power_savings, 0644,
sched_mc_power_savings_show,
@@ -7436,7 +7443,7 @@ static ssize_t sched_smt_power_savings_s
struct sysdev_class_attribute *attr,
const char *buf, size_t count)
{
- return sched_power_savings_store(buf, count, 1);
+ return sched_power_savings_store(buf, count, SD_LV_SIBLING);
}
static SYSDEV_CLASS_ATTR(sched_smt_power_savings, 0644,
sched_smt_power_savings_show,