summaryrefslogtreecommitdiffstats
path: root/include/linux/timex.h
diff options
context:
space:
mode:
authorjohn stultz <johnstul@us.ibm.com>2005-10-30 15:01:42 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2005-10-30 17:37:18 -0800
commit1bb34a412750291e4e5e9f1d0fe7ae1b7e976098 (patch)
tree00d481a2ff4302f444fbf7c31e5e661f79dc85a9 /include/linux/timex.h
parent9c0cbd54ce0397017a823484f9a8054ab369b8a2 (diff)
downloadlinux-1bb34a412750291e4e5e9f1d0fe7ae1b7e976098.tar.gz
linux-1bb34a412750291e4e5e9f1d0fe7ae1b7e976098.tar.bz2
linux-1bb34a412750291e4e5e9f1d0fe7ae1b7e976098.zip
[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>
Diffstat (limited to 'include/linux/timex.h')
-rw-r--r--include/linux/timex.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/timex.h b/include/linux/timex.h
index 7e050a2cc35b..04a4a8cb4ed3 100644
--- a/include/linux/timex.h
+++ b/include/linux/timex.h
@@ -282,6 +282,13 @@ static inline int ntp_synced(void)
return !(time_status & STA_UNSYNC);
}
+/* Required to safely shift negative values */
+#define shift_right(x, s) ({ \
+ __typeof__(x) __x = (x); \
+ __typeof__(s) __s = (s); \
+ __x < 0 ? -(-__x >> __s) : __x >> __s; \
+})
+
#ifdef CONFIG_TIME_INTERPOLATION