[PATCH] NTP shift_right cleanup
Create a macro shift_right() that avoids the numerous ugly conditionals in the NTP code that look like: if(a < 0) b = -(-a >> shift); else b = a >> shift; Replacing it with: b = shift_right(a, shift); This should have zero effect on the logic, however it should probably have a bit of testing just to be sure. Also replace open-coded min/max with the macros. Signed-off-by : John Stultz <johnstul@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
9c0cbd54ce
commit
1bb34a4127
@@ -338,30 +338,20 @@ int do_adjtimex(struct timex *txc)
|
||||
if (mtemp >= MINSEC) {
|
||||
ltemp = (time_offset / mtemp) << (SHIFT_USEC -
|
||||
SHIFT_UPDATE);
|
||||
if (ltemp < 0)
|
||||
time_freq -= -ltemp >> SHIFT_KH;
|
||||
else
|
||||
time_freq += ltemp >> SHIFT_KH;
|
||||
time_freq += shift_right(ltemp, SHIFT_KH);
|
||||
} else /* calibration interval too short (p. 12) */
|
||||
result = TIME_ERROR;
|
||||
} else { /* PLL mode */
|
||||
if (mtemp < MAXSEC) {
|
||||
ltemp *= mtemp;
|
||||
if (ltemp < 0)
|
||||
time_freq -= -ltemp >> (time_constant +
|
||||
time_constant +
|
||||
SHIFT_KF - SHIFT_USEC);
|
||||
else
|
||||
time_freq += ltemp >> (time_constant +
|
||||
time_freq += shift_right(ltemp,(time_constant +
|
||||
time_constant +
|
||||
SHIFT_KF - SHIFT_USEC);
|
||||
SHIFT_KF - SHIFT_USEC));
|
||||
} else /* calibration interval too long (p. 12) */
|
||||
result = TIME_ERROR;
|
||||
}
|
||||
if (time_freq > time_tolerance)
|
||||
time_freq = time_tolerance;
|
||||
else if (time_freq < -time_tolerance)
|
||||
time_freq = -time_tolerance;
|
||||
time_freq = min(time_freq, time_tolerance);
|
||||
time_freq = max(time_freq, -time_tolerance);
|
||||
} /* STA_PLL || STA_PPSTIME */
|
||||
} /* txc->modes & ADJ_OFFSET */
|
||||
if (txc->modes & ADJ_TICK) {
|
||||
@@ -384,10 +374,7 @@ leave: if ((time_status & (STA_UNSYNC|STA_CLOCKERR)) != 0
|
||||
if ((txc->modes & ADJ_OFFSET_SINGLESHOT) == ADJ_OFFSET_SINGLESHOT)
|
||||
txc->offset = save_adjust;
|
||||
else {
|
||||
if (time_offset < 0)
|
||||
txc->offset = -(-time_offset >> SHIFT_UPDATE);
|
||||
else
|
||||
txc->offset = time_offset >> SHIFT_UPDATE;
|
||||
txc->offset = shift_right(time_offset, SHIFT_UPDATE);
|
||||
}
|
||||
txc->freq = time_freq + pps_freq;
|
||||
txc->maxerror = time_maxerror;
|
||||
|
Reference in New Issue
Block a user