diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2009-08-14 09:47:26 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2009-08-15 04:55:46 -0400 |
commit | 155ec60226ae0ae2aadaa57c951a58a359331030 (patch) | |
tree | fdee05f7b587f8d49cdd277abdbe44212279a4ba /kernel/time/clocksource.c | |
parent | c55c87c892c1875deace0c8fc28787335277fdf2 (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.c | 6 |
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); |