* @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.
  */
        u32 mult;
        u32 shift;
        unsigned long flags;
+       cycle_t (*vread)(void);
 
        /* timekeeping specific data, ignore */
        cycle_t cycle_last, cycle_interval;
 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 */