Loading arch/x86/include/asm/pvclock.h +1 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ /* some helper functions for xen and kvm pv clock sources */ cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src); u8 pvclock_read_flags(struct pvclock_vcpu_time_info *src); void pvclock_set_flags(u8 flags); unsigned long pvclock_tsc_khz(struct pvclock_vcpu_time_info *src); void pvclock_read_wallclock(struct pvclock_wall_clock *wall, Loading arch/x86/kernel/pvclock.c +13 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,19 @@ void pvclock_resume(void) atomic64_set(&last_value, 0); } u8 pvclock_read_flags(struct pvclock_vcpu_time_info *src) { unsigned version; cycle_t ret; u8 flags; do { version = __pvclock_read_cycles(src, &ret, &flags); } while ((src->version & 1) || version != src->version); return flags & valid_flags; } cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src) { unsigned version; Loading Loading
arch/x86/include/asm/pvclock.h +1 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ /* some helper functions for xen and kvm pv clock sources */ cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src); u8 pvclock_read_flags(struct pvclock_vcpu_time_info *src); void pvclock_set_flags(u8 flags); unsigned long pvclock_tsc_khz(struct pvclock_vcpu_time_info *src); void pvclock_read_wallclock(struct pvclock_wall_clock *wall, Loading
arch/x86/kernel/pvclock.c +13 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,19 @@ void pvclock_resume(void) atomic64_set(&last_value, 0); } u8 pvclock_read_flags(struct pvclock_vcpu_time_info *src) { unsigned version; cycle_t ret; u8 flags; do { version = __pvclock_read_cycles(src, &ret, &flags); } while ((src->version & 1) || version != src->version); return flags & valid_flags; } cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src) { unsigned version; Loading