Skip to content

Commit

Permalink
sched: Introduce a function to update the idle statistics
Browse files Browse the repository at this point in the history
Currently, two places update the idle statistics (and more to
come later in this series).

This patch creates a helper function for updating these
statistics.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Rik van Riel <riel@redhat.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: davej@redhat.com
LKML-Reference: <20100509082245.163e67ed@infradead.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Arjan van de Ven authored and Ingo Molnar committed May 9, 2010
1 parent b1f724c commit 595aac4
Showing 1 changed file with 19 additions and 10 deletions.
29 changes: 19 additions & 10 deletions kernel/time/tick-sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,29 +150,38 @@ static void tick_nohz_update_jiffies(ktime_t now)
touch_softlockup_watchdog();
}

static void tick_nohz_stop_idle(int cpu, ktime_t now)
/*
* Updates the per cpu time idle statistics counters
*/
static void update_ts_time_stats(struct tick_sched *ts, ktime_t now)
{
struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu);
ktime_t delta;

delta = ktime_sub(now, ts->idle_entrytime);
ts->idle_lastupdate = now;
ts->idle_sleeptime = ktime_add(ts->idle_sleeptime, delta);
if (ts->idle_active) {
delta = ktime_sub(now, ts->idle_entrytime);
ts->idle_sleeptime = ktime_add(ts->idle_sleeptime, delta);
}
}

static void tick_nohz_stop_idle(int cpu, ktime_t now)
{
struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu);

update_ts_time_stats(ts, now);
ts->idle_active = 0;

sched_clock_idle_wakeup_event(0);
}

static ktime_t tick_nohz_start_idle(struct tick_sched *ts)
{
ktime_t now, delta;
ktime_t now;

now = ktime_get();
if (ts->idle_active) {
delta = ktime_sub(now, ts->idle_entrytime);
ts->idle_lastupdate = now;
ts->idle_sleeptime = ktime_add(ts->idle_sleeptime, delta);
}

update_ts_time_stats(ts, now);

ts->idle_entrytime = now;
ts->idle_active = 1;
sched_clock_idle_sleep_event();
Expand Down

0 comments on commit 595aac4

Please sign in to comment.