0d7b8547fb
It's unnecessary overhead in code that's supposed to be highly optimized. Removing it allows us to remove one of the two syscall instructions in the vsyscall page. The only sensible use for it is for UML users, and it doesn't fully address inconsistent vsyscall results on UML. The real fix for UML is to stop using vsyscalls entirely. Signed-off-by: Andy Lutomirski <luto@mit.edu> Cc: Jesper Juhl <jj@chaosbits.net> Cc: Borislav Petkov <bp@alien8.de> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Arjan van de Ven <arjan@infradead.org> Cc: Jan Beulich <JBeulich@novell.com> Cc: richard -rw- weinberger <richard.weinberger@gmail.com> Cc: Mikael Pettersson <mikpe@it.uu.se> Cc: Andi Kleen <andi@firstfloor.org> Cc: Brian Gerst <brgerst@gmail.com> Cc: Louis Rilling <Louis.Rilling@kerlabs.com> Cc: Valdis.Kletnieks@vt.edu Cc: pageexec@freemail.hu Link: http://lkml.kernel.org/r/973ae803fe76f712da4b2740e66dccf452d3b1e4.1307292171.git.luto@mit.edu Signed-off-by: Ingo Molnar <mingo@elte.hu>
27 lines
568 B
C
27 lines
568 B
C
#ifndef _ASM_X86_VGTOD_H
|
|
#define _ASM_X86_VGTOD_H
|
|
|
|
#include <asm/vsyscall.h>
|
|
#include <linux/clocksource.h>
|
|
|
|
struct vsyscall_gtod_data {
|
|
seqlock_t lock;
|
|
|
|
/* open coded 'struct timespec' */
|
|
time_t wall_time_sec;
|
|
u32 wall_time_nsec;
|
|
|
|
struct timezone sys_tz;
|
|
struct { /* extract of a clocksource struct */
|
|
cycle_t (*vread)(void);
|
|
cycle_t cycle_last;
|
|
cycle_t mask;
|
|
u32 mult;
|
|
u32 shift;
|
|
} clock;
|
|
struct timespec wall_to_monotonic;
|
|
struct timespec wall_time_coarse;
|
|
};
|
|
extern struct vsyscall_gtod_data vsyscall_gtod_data;
|
|
|
|
#endif /* _ASM_X86_VGTOD_H */
|