diff options
author | john stultz <johnstul@us.ibm.com> | 2007-02-16 01:28:17 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-16 08:14:00 -0800 |
commit | acc9a9dcdd0dd1d295c2f2ee02c27c761bd63cb1 (patch) | |
tree | 78acee4323183da18586c9f4fc8a50999a2f4755 | |
parent | 88ad0bf6890505cbd9ca1dbb79944a27b5c8697d (diff) |
[PATCH] generic: vsyscall-gtod support for GENERIC_TIME
Provides generic infrastructure for vsyscall-gtod.
[akpm@osdl.org: cleanup]
Signed-off-by: John Stultz <johnstul@us.ibm.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Andi Kleen <ak@muc.de>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | include/linux/clocksource.h | 10 | ||||
-rw-r--r-- | kernel/timer.c | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h index 830a250ecf9..daa4940cc0f 100644 --- a/include/linux/clocksource.h +++ b/include/linux/clocksource.h @@ -47,6 +47,7 @@ struct clocksource; * @mult: cycle to nanosecond multiplier * @shift: cycle to nanosecond divisor (power of two) * @flags: flags describing special properties + * @vread: vsyscall based read * @cycle_interval: Used internally by timekeeping core, please ignore. * @xtime_interval: Used internally by timekeeping core, please ignore. */ @@ -59,6 +60,7 @@ struct clocksource { u32 mult; u32 shift; unsigned long flags; + cycle_t (*vread)(void); /* timekeeping specific data, ignore */ cycle_t cycle_last, cycle_interval; @@ -197,4 +199,12 @@ extern int clocksource_register(struct clocksource*); extern struct clocksource* clocksource_get_next(void); extern void clocksource_change_rating(struct clocksource *cs, int rating); +#ifdef CONFIG_GENERIC_TIME_VSYSCALL +extern void update_vsyscall(struct timespec *ts, struct clocksource *c); +#else +static inline void update_vsyscall(struct timespec *ts, struct clocksource *c) +{ +} +#endif + #endif /* _LINUX_CLOCKSOURCE_H */ diff --git a/kernel/timer.c b/kernel/timer.c index c3c67f3c019..cb1b86a9c52 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -1174,6 +1174,7 @@ static void update_wall_time(void) /* check to see if there is a new clocksource to use */ change_clocksource(); + update_vsyscall(&xtime, clock); } /* |