*/
static struct timespec raw_time;
-/* must hold write on xtime_lock */
-static void timekeeping_update(bool clearntp)
-{
- if (clearntp) {
- timekeeper.ntp_error = 0;
- ntp_clear();
- }
- update_vsyscall(&xtime, &wall_to_monotonic,
- timekeeper.clock, timekeeper.mult);
-}
-
-
-
/* flag for if timekeeping is suspended */
int __read_mostly timekeeping_suspended;
xtime = *tv;
- timekeeping_update(true);
+ timekeeper.ntp_error = 0;
+ ntp_clear();
+
+ update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
+ timekeeper.mult);
write_sequnlock_irqrestore(&xtime_lock, flags);
xtime = timespec_add(xtime, *ts);
wall_to_monotonic = timespec_sub(wall_to_monotonic, *ts);
- timekeeping_update(true);
+ timekeeper.ntp_error = 0;
+ ntp_clear();
+
+ update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
+ timekeeper.mult);
write_sequnlock_irqrestore(&xtime_lock, flags);
__timekeeping_inject_sleeptime(delta);
- timekeeping_update(true);
+ timekeeper.ntp_error = 0;
+ ntp_clear();
+ update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
+ timekeeper.mult);
write_sequnlock_irqrestore(&xtime_lock, flags);
wall_to_monotonic.tv_sec -= leap;
}
- timekeeping_update(false);
+ /* check to see if there is a new clocksource to use */
+ update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
+ timekeeper.mult);
}
/**