aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time/clocksource.c
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2009-08-14 09:47:26 -0400
committerThomas Gleixner <tglx@linutronix.de>2009-08-15 04:55:46 -0400
commit155ec60226ae0ae2aadaa57c951a58a359331030 (patch)
treefdee05f7b587f8d49cdd277abdbe44212279a4ba /kernel/time/clocksource.c
parentc55c87c892c1875deace0c8fc28787335277fdf2 (diff)
timekeeping: Introduce struct timekeeper
Add struct timekeeper to keep the internal values timekeeping.c needs in regard to the currently selected clock source. This moves the timekeeping intervals, xtime_nsec and the ntp error value from struct clocksource to struct timekeeper. The raw_time is removed from the clocksource as well. It gets treated like xtime as a global variable. Eventually xtime raw_time should be moved to struct timekeeper. [ tglx: minor cleanup ] Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Ingo Molnar <mingo@elte.hu> Acked-by: John Stultz <johnstul@us.ibm.com> Cc: Daniel Walker <dwalker@fifo99.com> LKML-Reference: <20090814134809.613209842@de.ibm.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/time/clocksource.c')
-rw-r--r--kernel/time/clocksource.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
index f1508019bfb4..f18c9a6bdcf4 100644
--- a/kernel/time/clocksource.c
+++ b/kernel/time/clocksource.c
@@ -177,7 +177,8 @@ static void clocksource_watchdog(unsigned long data)
177 goto out; 177 goto out;
178 178
179 wdnow = watchdog->read(watchdog); 179 wdnow = watchdog->read(watchdog);
180 wd_nsec = cyc2ns(watchdog, (wdnow - watchdog_last) & watchdog->mask); 180 wd_nsec = clocksource_cyc2ns((wdnow - watchdog_last) & watchdog->mask,
181 watchdog->mult, watchdog->shift);
181 watchdog_last = wdnow; 182 watchdog_last = wdnow;
182 183
183 list_for_each_entry(cs, &watchdog_list, wd_list) { 184 list_for_each_entry(cs, &watchdog_list, wd_list) {
@@ -196,7 +197,8 @@ static void clocksource_watchdog(unsigned long data)
196 } 197 }
197 198
198 /* Check the deviation from the watchdog clocksource. */ 199 /* Check the deviation from the watchdog clocksource. */
199 cs_nsec = cyc2ns(cs, (csnow - cs->wd_last) & cs->mask); 200 cs_nsec = clocksource_cyc2ns((csnow - cs->wd_last) &
201 cs->mask, cs->mult, cs->shift);
200 cs->wd_last = csnow; 202 cs->wd_last = csnow;
201 if (abs(cs_nsec - wd_nsec) > WATCHDOG_THRESHOLD) { 203 if (abs(cs_nsec - wd_nsec) > WATCHDOG_THRESHOLD) {
202 clocksource_unstable(cs, cs_nsec - wd_nsec); 204 clocksource_unstable(cs, cs_nsec - wd_nsec);