Skip to content

Commit

Permalink
sched: convert idle_balance() to cpumask_var_t.
Browse files Browse the repository at this point in the history
Impact: stack usage reduction

Dynamically allocating cpumasks (when CONFIG_CPUMASK_OFFSTACK) saves
space in the stack.  cpumask_var_t is just a struct cpumask for
!CONFIG_CPUMASK_OFFSTACK.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Rusty Russell authored and Ingo Molnar committed Nov 24, 2008
1 parent 7d1e6a9 commit 4d2732c
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions kernel/sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -3676,7 +3676,10 @@ static void idle_balance(int this_cpu, struct rq *this_rq)
struct sched_domain *sd;
int pulled_task = -1;
unsigned long next_balance = jiffies + HZ;
cpumask_t tmpmask;
cpumask_var_t tmpmask;

if (!alloc_cpumask_var(&tmpmask, GFP_ATOMIC))
return;

for_each_domain(this_cpu, sd) {
unsigned long interval;
Expand All @@ -3687,7 +3690,7 @@ static void idle_balance(int this_cpu, struct rq *this_rq)
if (sd->flags & SD_BALANCE_NEWIDLE)
/* If we've pulled tasks over stop searching: */
pulled_task = load_balance_newidle(this_cpu, this_rq,
sd, &tmpmask);
sd, tmpmask);

interval = msecs_to_jiffies(sd->balance_interval);
if (time_after(next_balance, sd->last_balance + interval))
Expand All @@ -3702,6 +3705,7 @@ static void idle_balance(int this_cpu, struct rq *this_rq)
*/
this_rq->next_balance = next_balance;
}
free_cpumask_var(tmpmask);
}

/*
Expand Down

0 comments on commit 4d2732c

Please sign in to comment.