[RFC][PATCH - 12/13] NTP cleanup: cleanup ntp_advance() adjtimecode

From: john stultz
Date: Wed Aug 10 2005 - 20:36:59 EST


All,
This patch simplifies and cleans up the adjtime code in ntp_advance and
corrects a comment.

Any comments or feedback would be greatly appreciated.

thanks
-john

linux-2.6.13-rc6_timeofday-ntp-part12_B5.patch
============================================
diff --git a/kernel/ntp.c b/kernel/ntp.c
--- a/kernel/ntp.c
+++ b/kernel/ntp.c
@@ -156,29 +156,25 @@ void ntp_advance(unsigned long interval_
shifted_ppm_sum += ss_adj << SHIFT_USEC;


- if ( (time_adjust_step = ntp_adjtime_offset) != 0 ) {
- /* We are doing an adjtime thing.
- *
- * Prepare time_adjust_step to be within bounds.
- * Note that a positive ntp_adjtime_offset means we want the clock
- * to run faster.
- *
- * Limit the amount of the step to be in the range
- * -tickadj .. +tickadj
- */
- if (ntp_adjtime_offset > tickadj)
- time_adjust_step = tickadj;
- else if (ntp_adjtime_offset < -tickadj)
- time_adjust_step = -tickadj;
+ /* Calculate the fixed tick adjustment */
+ fixed_tick_ns_adj = 0;

- /* Reduce by this step the amount of time left */
- ntp_adjtime_offset -= time_adjust_step;
+ /* If we are doing an adjtime thing */
+ if (ntp_adjtime_offset) {
+ long adjust_step = ntp_adjtime_offset;
+ /* Limit the amount of the step to be in the range
+ * -tickadj .. +tickadj
+ */
+ adjust_step = min_t(long, tickadj, adjust_step);
+ adjust_step = max_t(long, -tickadj, adjust_step);
+ /* Reduce by this step the amount of time left */
+ ntp_adjtime_offset -= adjust_step;
+ fixed_tick_ns_adj += adjust_step * 1000;
}
- fixed_tick_ns_adj = time_adjust_step * 1000;

/*
- * Advance the phase, once it gets to one microsecond, then
- * advance the tick more.
+ * Advance the phase, once it gets to one nanosecond,
+ * then advance the fixed_tick_ns_adj.
*/
time_phase += time_adj;
if (time_phase <= -FINENSEC) {


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/