Commit 8e197efa authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] sched.c style cleanups

From: Ingo Molnar <mingo@elte.hu>

- sched.c style cleanups (no code change)
parent 2df40901
...@@ -143,7 +143,7 @@ ...@@ -143,7 +143,7 @@
#define TASK_INTERACTIVE(p) \ #define TASK_INTERACTIVE(p) \
((p)->prio <= (p)->static_prio - DELTA(p)) ((p)->prio <= (p)->static_prio - DELTA(p))
#define JUST_INTERACTIVE_SLEEP(p) \ #define INTERACTIVE_SLEEP(p) \
(JIFFIES_TO_NS(MAX_SLEEP_AVG * \ (JIFFIES_TO_NS(MAX_SLEEP_AVG * \
(MAX_BONUS / 2 + DELTA((p)) + 1) / MAX_BONUS - 1)) (MAX_BONUS / 2 + DELTA((p)) + 1) / MAX_BONUS - 1))
...@@ -168,7 +168,8 @@ ...@@ -168,7 +168,8 @@
*/ */
#define BASE_TIMESLICE(p) (MIN_TIMESLICE + \ #define BASE_TIMESLICE(p) (MIN_TIMESLICE + \
((MAX_TIMESLICE - MIN_TIMESLICE) * (MAX_PRIO-1-(p)->static_prio)/(MAX_USER_PRIO - 1))) ((MAX_TIMESLICE - MIN_TIMESLICE) * \
(MAX_PRIO-1 - (p)->static_prio) / (MAX_USER_PRIO-1)))
static inline unsigned int task_timeslice(task_t *p) static inline unsigned int task_timeslice(task_t *p)
{ {
...@@ -225,7 +226,7 @@ static DEFINE_PER_CPU(struct runqueue, runqueues); ...@@ -225,7 +226,7 @@ static DEFINE_PER_CPU(struct runqueue, runqueues);
* Default context-switch locking: * Default context-switch locking:
*/ */
#ifndef prepare_arch_switch #ifndef prepare_arch_switch
# define prepare_arch_switch(rq, next) do { } while(0) # define prepare_arch_switch(rq, next) do { } while (0)
# define finish_arch_switch(rq, next) spin_unlock_irq(&(rq)->lock) # define finish_arch_switch(rq, next) spin_unlock_irq(&(rq)->lock)
# define task_running(rq, p) ((rq)->curr == (p)) # define task_running(rq, p) ((rq)->curr == (p))
#endif #endif
...@@ -396,7 +397,7 @@ static void recalc_task_prio(task_t *p, unsigned long long now) ...@@ -396,7 +397,7 @@ static void recalc_task_prio(task_t *p, unsigned long long now)
* other processes. * other processes.
*/ */
if (p->mm && p->activated != -1 && if (p->mm && p->activated != -1 &&
sleep_time > JUST_INTERACTIVE_SLEEP(p)){ sleep_time > INTERACTIVE_SLEEP(p)) {
p->sleep_avg = JIFFIES_TO_NS(MAX_SLEEP_AVG - p->sleep_avg = JIFFIES_TO_NS(MAX_SLEEP_AVG -
AVG_TIMESLICE); AVG_TIMESLICE);
if (!HIGH_CREDIT(p)) if (!HIGH_CREDIT(p))
...@@ -414,21 +415,19 @@ static void recalc_task_prio(task_t *p, unsigned long long now) ...@@ -414,21 +415,19 @@ static void recalc_task_prio(task_t *p, unsigned long long now)
*/ */
if (LOW_CREDIT(p) && if (LOW_CREDIT(p) &&
sleep_time > JIFFIES_TO_NS(task_timeslice(p))) sleep_time > JIFFIES_TO_NS(task_timeslice(p)))
sleep_time = sleep_time = JIFFIES_TO_NS(task_timeslice(p));
JIFFIES_TO_NS(task_timeslice(p));
/* /*
* Non high_credit tasks waking from uninterruptible * Non high_credit tasks waking from uninterruptible
* sleep are limited in their sleep_avg rise as they * sleep are limited in their sleep_avg rise as they
* are likely to be cpu hogs waiting on I/O * are likely to be cpu hogs waiting on I/O
*/ */
if (p->activated == -1 && !HIGH_CREDIT(p) && p->mm){ if (p->activated == -1 && !HIGH_CREDIT(p) && p->mm) {
if (p->sleep_avg >= JUST_INTERACTIVE_SLEEP(p)) if (p->sleep_avg >= INTERACTIVE_SLEEP(p))
sleep_time = 0; sleep_time = 0;
else if (p->sleep_avg + sleep_time >= else if (p->sleep_avg + sleep_time >=
JUST_INTERACTIVE_SLEEP(p)){ INTERACTIVE_SLEEP(p)) {
p->sleep_avg = p->sleep_avg = INTERACTIVE_SLEEP(p);
JUST_INTERACTIVE_SLEEP(p);
sleep_time = 0; sleep_time = 0;
} }
} }
...@@ -437,13 +436,13 @@ static void recalc_task_prio(task_t *p, unsigned long long now) ...@@ -437,13 +436,13 @@ static void recalc_task_prio(task_t *p, unsigned long long now)
* This code gives a bonus to interactive tasks. * This code gives a bonus to interactive tasks.
* *
* The boost works by updating the 'average sleep time' * The boost works by updating the 'average sleep time'
* value here, based on ->timestamp. The more time a task * value here, based on ->timestamp. The more time a
* spends sleeping, the higher the average gets - and the * task spends sleeping, the higher the average gets -
* higher the priority boost gets as well. * and the higher the priority boost gets as well.
*/ */
p->sleep_avg += sleep_time; p->sleep_avg += sleep_time;
if (p->sleep_avg > NS_MAX_SLEEP_AVG){ if (p->sleep_avg > NS_MAX_SLEEP_AVG) {
p->sleep_avg = NS_MAX_SLEEP_AVG; p->sleep_avg = NS_MAX_SLEEP_AVG;
if (!HIGH_CREDIT(p)) if (!HIGH_CREDIT(p))
p->interactive_credit++; p->interactive_credit++;
...@@ -470,7 +469,7 @@ static inline void activate_task(task_t *p, runqueue_t *rq) ...@@ -470,7 +469,7 @@ static inline void activate_task(task_t *p, runqueue_t *rq)
* This checks to make sure it's not an uninterruptible task * This checks to make sure it's not an uninterruptible task
* that is now waking up. * that is now waking up.
*/ */
if (!p->activated){ if (!p->activated) {
/* /*
* Tasks which were woken up by interrupts (ie. hw events) * Tasks which were woken up by interrupts (ie. hw events)
* are most likely of interactive nature. So we give them * are most likely of interactive nature. So we give them
...@@ -480,13 +479,14 @@ static inline void activate_task(task_t *p, runqueue_t *rq) ...@@ -480,13 +479,14 @@ static inline void activate_task(task_t *p, runqueue_t *rq)
*/ */
if (in_interrupt()) if (in_interrupt())
p->activated = 2; p->activated = 2;
else else {
/* /*
* Normal first-time wakeups get a credit too for on-runqueue * Normal first-time wakeups get a credit too for
* time, but it will be weighted down: * on-runqueue time, but it will be weighted down:
*/ */
p->activated = 1; p->activated = 1;
} }
}
p->timestamp = now; p->timestamp = now;
__activate_task(p, rq); __activate_task(p, rq);
...@@ -632,13 +632,14 @@ static int try_to_wake_up(task_t * p, unsigned int state, int sync) ...@@ -632,13 +632,14 @@ static int try_to_wake_up(task_t * p, unsigned int state, int sync)
*/ */
if (unlikely(sync && !task_running(rq, p) && if (unlikely(sync && !task_running(rq, p) &&
(task_cpu(p) != smp_processor_id()) && (task_cpu(p) != smp_processor_id()) &&
cpu_isset(smp_processor_id(), p->cpus_allowed))) { cpu_isset(smp_processor_id(),
p->cpus_allowed))) {
set_task_cpu(p, smp_processor_id()); set_task_cpu(p, smp_processor_id());
task_rq_unlock(rq, &flags); task_rq_unlock(rq, &flags);
goto repeat_lock_task; goto repeat_lock_task;
} }
if (old_state == TASK_UNINTERRUPTIBLE){ if (old_state == TASK_UNINTERRUPTIBLE) {
rq->nr_uninterruptible--; rq->nr_uninterruptible--;
/* /*
* Tasks on involuntary sleep don't earn * Tasks on involuntary sleep don't earn
...@@ -663,7 +664,8 @@ static int try_to_wake_up(task_t * p, unsigned int state, int sync) ...@@ -663,7 +664,8 @@ static int try_to_wake_up(task_t * p, unsigned int state, int sync)
} }
int wake_up_process(task_t * p) int wake_up_process(task_t * p)
{ {
return try_to_wake_up(p, TASK_STOPPED | TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE, 0); return try_to_wake_up(p, TASK_STOPPED |
TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE, 0);
} }
EXPORT_SYMBOL(wake_up_process); EXPORT_SYMBOL(wake_up_process);
...@@ -854,7 +856,8 @@ asmlinkage void schedule_tail(task_t *prev) ...@@ -854,7 +856,8 @@ asmlinkage void schedule_tail(task_t *prev)
* context_switch - switch to the new MM and the new * context_switch - switch to the new MM and the new
* thread's register state. * thread's register state.
*/ */
static inline task_t * context_switch(runqueue_t *rq, task_t *prev, task_t *next) static inline
task_t * context_switch(runqueue_t *rq, task_t *prev, task_t *next)
{ {
struct mm_struct *mm = next->mm; struct mm_struct *mm = next->mm;
struct mm_struct *oldmm = prev->active_mm; struct mm_struct *oldmm = prev->active_mm;
...@@ -1082,8 +1085,10 @@ static int find_busiest_node(int this_node) ...@@ -1082,8 +1085,10 @@ static int find_busiest_node(int this_node)
* this_rq is locked already. Recalculate nr_running if we have to * this_rq is locked already. Recalculate nr_running if we have to
* drop the runqueue lock. * drop the runqueue lock.
*/ */
static inline unsigned int double_lock_balance(runqueue_t *this_rq, static inline
runqueue_t *busiest, int this_cpu, int idle, unsigned int nr_running) unsigned int double_lock_balance(runqueue_t *this_rq, runqueue_t *busiest,
int this_cpu, int idle,
unsigned int nr_running)
{ {
if (unlikely(!spin_trylock(&busiest->lock))) { if (unlikely(!spin_trylock(&busiest->lock))) {
if (busiest < this_rq) { if (busiest < this_rq) {
...@@ -1091,7 +1096,8 @@ static inline unsigned int double_lock_balance(runqueue_t *this_rq, ...@@ -1091,7 +1096,8 @@ static inline unsigned int double_lock_balance(runqueue_t *this_rq,
spin_lock(&busiest->lock); spin_lock(&busiest->lock);
spin_lock(&this_rq->lock); spin_lock(&this_rq->lock);
/* Need to recalculate nr_running */ /* Need to recalculate nr_running */
if (idle || (this_rq->nr_running > this_rq->prev_cpu_load[this_cpu])) if (idle || (this_rq->nr_running >
this_rq->prev_cpu_load[this_cpu]))
nr_running = this_rq->nr_running; nr_running = this_rq->nr_running;
else else
nr_running = this_rq->prev_cpu_load[this_cpu]; nr_running = this_rq->prev_cpu_load[this_cpu];
...@@ -1104,7 +1110,9 @@ static inline unsigned int double_lock_balance(runqueue_t *this_rq, ...@@ -1104,7 +1110,9 @@ static inline unsigned int double_lock_balance(runqueue_t *this_rq,
/* /*
* find_busiest_queue - find the busiest runqueue among the cpus in cpumask. * find_busiest_queue - find the busiest runqueue among the cpus in cpumask.
*/ */
static inline runqueue_t *find_busiest_queue(runqueue_t *this_rq, int this_cpu, int idle, int *imbalance, cpumask_t cpumask) static inline
runqueue_t *find_busiest_queue(runqueue_t *this_rq, int this_cpu, int idle,
int *imbalance, cpumask_t cpumask)
{ {
int nr_running, load, max_load, i; int nr_running, load, max_load, i;
runqueue_t *busiest, *rq_src; runqueue_t *busiest, *rq_src;
...@@ -1167,7 +1175,8 @@ static inline runqueue_t *find_busiest_queue(runqueue_t *this_rq, int this_cpu, ...@@ -1167,7 +1175,8 @@ static inline runqueue_t *find_busiest_queue(runqueue_t *this_rq, int this_cpu,
goto out; goto out;
} }
nr_running = double_lock_balance(this_rq, busiest, this_cpu, idle, nr_running); nr_running = double_lock_balance(this_rq, busiest, this_cpu,
idle, nr_running);
/* /*
* Make sure nothing changed since we checked the * Make sure nothing changed since we checked the
* runqueue length. * runqueue length.
...@@ -1184,14 +1193,17 @@ static inline runqueue_t *find_busiest_queue(runqueue_t *this_rq, int this_cpu, ...@@ -1184,14 +1193,17 @@ static inline runqueue_t *find_busiest_queue(runqueue_t *this_rq, int this_cpu,
* pull_task - move a task from a remote runqueue to the local runqueue. * pull_task - move a task from a remote runqueue to the local runqueue.
* Both runqueues must be locked. * Both runqueues must be locked.
*/ */
static inline void pull_task(runqueue_t *src_rq, prio_array_t *src_array, task_t *p, runqueue_t *this_rq, int this_cpu) static inline
void pull_task(runqueue_t *src_rq, prio_array_t *src_array, task_t *p,
runqueue_t *this_rq, int this_cpu)
{ {
dequeue_task(p, src_array); dequeue_task(p, src_array);
nr_running_dec(src_rq); nr_running_dec(src_rq);
set_task_cpu(p, this_cpu); set_task_cpu(p, this_cpu);
nr_running_inc(this_rq); nr_running_inc(this_rq);
enqueue_task(p, this_rq->active); enqueue_task(p, this_rq->active);
p->timestamp = sched_clock() - (src_rq->timestamp_last_tick - p->timestamp); p->timestamp = sched_clock() -
(src_rq->timestamp_last_tick - p->timestamp);
/* /*
* Note that idle threads have a prio of MAX_PRIO, for this test * Note that idle threads have a prio of MAX_PRIO, for this test
* to be always true for them. * to be always true for them.
...@@ -1203,8 +1215,8 @@ static inline void pull_task(runqueue_t *src_rq, prio_array_t *src_array, task_t ...@@ -1203,8 +1215,8 @@ static inline void pull_task(runqueue_t *src_rq, prio_array_t *src_array, task_t
/* /*
* can_migrate_task - may task p from runqueue rq be migrated to this_cpu? * can_migrate_task - may task p from runqueue rq be migrated to this_cpu?
*/ */
static inline int static inline
can_migrate_task(task_t *tsk, runqueue_t *rq, int this_cpu, int idle) int can_migrate_task(task_t *tsk, runqueue_t *rq, int this_cpu, int idle)
{ {
unsigned long delta = rq->timestamp_last_tick - tsk->timestamp; unsigned long delta = rq->timestamp_last_tick - tsk->timestamp;
...@@ -1239,7 +1251,8 @@ static void load_balance(runqueue_t *this_rq, int idle, cpumask_t cpumask) ...@@ -1239,7 +1251,8 @@ static void load_balance(runqueue_t *this_rq, int idle, cpumask_t cpumask)
struct list_head *head, *curr; struct list_head *head, *curr;
task_t *tmp; task_t *tmp;
busiest = find_busiest_queue(this_rq, this_cpu, idle, &imbalance, cpumask); busiest = find_busiest_queue(this_rq, this_cpu, idle,
&imbalance, cpumask);
if (!busiest) if (!busiest)
goto out; goto out;
...@@ -1381,7 +1394,7 @@ static inline void rebalance_tick(runqueue_t *this_rq, int idle) ...@@ -1381,7 +1394,7 @@ static inline void rebalance_tick(runqueue_t *this_rq, int idle)
} }
#endif #endif
DEFINE_PER_CPU(struct kernel_stat, kstat) = { { 0 } }; DEFINE_PER_CPU(struct kernel_stat, kstat);
EXPORT_PER_CPU_SYMBOL(kstat); EXPORT_PER_CPU_SYMBOL(kstat);
...@@ -1630,7 +1643,7 @@ asmlinkage void schedule(void) ...@@ -1630,7 +1643,7 @@ asmlinkage void schedule(void)
RCU_qsctr(task_cpu(prev))++; RCU_qsctr(task_cpu(prev))++;
prev->sleep_avg -= run_time; prev->sleep_avg -= run_time;
if ((long)prev->sleep_avg <= 0){ if ((long)prev->sleep_avg <= 0) {
prev->sleep_avg = 0; prev->sleep_avg = 0;
if (!(HIGH_CREDIT(prev) || LOW_CREDIT(prev))) if (!(HIGH_CREDIT(prev) || LOW_CREDIT(prev)))
prev->interactive_credit--; prev->interactive_credit--;
...@@ -1707,7 +1720,8 @@ EXPORT_SYMBOL(default_wake_function); ...@@ -1707,7 +1720,8 @@ EXPORT_SYMBOL(default_wake_function);
* started to run but is not in state TASK_RUNNING. try_to_wake_up() returns * started to run but is not in state TASK_RUNNING. try_to_wake_up() returns
* zero in this (rare) case, and we handle it by continuing to scan the queue. * zero in this (rare) case, and we handle it by continuing to scan the queue.
*/ */
static void __wake_up_common(wait_queue_head_t *q, unsigned int mode, int nr_exclusive, int sync) static void __wake_up_common(wait_queue_head_t *q, unsigned int mode,
int nr_exclusive, int sync)
{ {
struct list_head *tmp, *next; struct list_head *tmp, *next;
...@@ -1784,7 +1798,8 @@ void complete(struct completion *x) ...@@ -1784,7 +1798,8 @@ void complete(struct completion *x)
spin_lock_irqsave(&x->wait.lock, flags); spin_lock_irqsave(&x->wait.lock, flags);
x->done++; x->done++;
__wake_up_common(&x->wait, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE, 1, 0); __wake_up_common(&x->wait, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE,
1, 0);
spin_unlock_irqrestore(&x->wait.lock, flags); spin_unlock_irqrestore(&x->wait.lock, flags);
} }
...@@ -1796,7 +1811,8 @@ void complete_all(struct completion *x) ...@@ -1796,7 +1811,8 @@ void complete_all(struct completion *x)
spin_lock_irqsave(&x->wait.lock, flags); spin_lock_irqsave(&x->wait.lock, flags);
x->done += UINT_MAX/2; x->done += UINT_MAX/2;
__wake_up_common(&x->wait, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE, 0, 0); __wake_up_common(&x->wait, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE,
0, 0);
spin_unlock_irqrestore(&x->wait.lock, flags); spin_unlock_irqrestore(&x->wait.lock, flags);
} }
...@@ -2449,7 +2465,8 @@ asmlinkage long sys_sched_get_priority_min(int policy) ...@@ -2449,7 +2465,8 @@ asmlinkage long sys_sched_get_priority_min(int policy)
* this syscall writes the default timeslice value of a given process * this syscall writes the default timeslice value of a given process
* into the user-space timespec buffer. A value of '0' means infinity. * into the user-space timespec buffer. A value of '0' means infinity.
*/ */
asmlinkage long sys_sched_rr_get_interval(pid_t pid, struct timespec __user *interval) asmlinkage
long sys_sched_rr_get_interval(pid_t pid, struct timespec __user *interval)
{ {
int retval = -EINVAL; int retval = -EINVAL;
struct timespec t; struct timespec t;
...@@ -2695,7 +2712,7 @@ static void move_task_away(struct task_struct *p, int dest_cpu) ...@@ -2695,7 +2712,7 @@ static void move_task_away(struct task_struct *p, int dest_cpu)
} }
p->timestamp = rq_dest->timestamp_last_tick; p->timestamp = rq_dest->timestamp_last_tick;
out: out:
double_rq_unlock(this_rq(), rq_dest); double_rq_unlock(this_rq(), rq_dest);
local_irq_restore(flags); local_irq_restore(flags);
} }
...@@ -2764,11 +2781,10 @@ static int migration_thread(void * data) ...@@ -2764,11 +2781,10 @@ static int migration_thread(void * data)
* migration_call - callback that gets triggered when a CPU is added. * migration_call - callback that gets triggered when a CPU is added.
* Here we can start up the necessary migration thread for the new CPU. * Here we can start up the necessary migration thread for the new CPU.
*/ */
static int migration_call(struct notifier_block *nfb, static int migration_call(struct notifier_block *nfb, unsigned long action,
unsigned long action,
void *hcpu) void *hcpu)
{ {
long cpu = (long) hcpu; long cpu = (long)hcpu;
migration_startup_t startup; migration_startup_t startup;
switch (action) { switch (action) {
...@@ -2797,7 +2813,8 @@ static int migration_call(struct notifier_block *nfb, ...@@ -2797,7 +2813,8 @@ static int migration_call(struct notifier_block *nfb,
return NOTIFY_OK; return NOTIFY_OK;
} }
static struct notifier_block migration_notifier = { &migration_call, NULL, 0 }; static struct notifier_block migration_notifier
= { .notifier_call = &migration_call };
__init int migration_init(void) __init int migration_init(void)
{ {
...@@ -2851,7 +2868,8 @@ static struct notifier_block __devinitdata kstat_nb = { ...@@ -2851,7 +2868,8 @@ static struct notifier_block __devinitdata kstat_nb = {
.next = NULL, .next = NULL,
}; };
__init static void init_kstat(void) { __init static void init_kstat(void)
{
kstat_cpu_notify(&kstat_nb, (unsigned long)CPU_UP_PREPARE, kstat_cpu_notify(&kstat_nb, (unsigned long)CPU_UP_PREPARE,
(void *)(long)smp_processor_id()); (void *)(long)smp_processor_id());
register_cpu_notifier(&kstat_nb); register_cpu_notifier(&kstat_nb);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment