79 lines
2.3 KiB
Diff
79 lines
2.3 KiB
Diff
>From 166b7526ccfea8b44626b6023ff5b0a8eb869bb3 Mon Sep 17 00:00:00 2001
|
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
|
Date: Sun, 18 Apr 2010 10:33:02 -0700
|
|
Subject: [PATCH 2/7] sched: introduce a function to update the idle statistics
|
|
Patch-mainline: in -mm tree as of 19 Apr 2010
|
|
|
|
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>
|
|
---
|
|
kernel/time/tick-sched.c | 29 +++++++++++++++++++----------
|
|
1 files changed, 19 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
|
|
index 54dc155..ca2211d 100644
|
|
--- a/kernel/time/tick-sched.c
|
|
+++ b/kernel/time/tick-sched.c
|
|
@@ -150,14 +150,25 @@ 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);
|
|
@@ -165,14 +176,12 @@ static void tick_nohz_stop_idle(int cpu, ktime_t now)
|
|
|
|
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();
|
|
--
|
|
1.6.2.5
|
|
|
|
--
|
|
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
|
|
the body of a message to majordomo@vger.kernel.org
|
|
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
|
Please read the FAQ at http://www.tux.org/lkml/
|
|
|