[lib] Bug #134: threads should be more robust against backward time jumps
2006-08-25 Paul Jakma <paul.jakma@sun.com>
* thread.c: (general) Add support for monotonic clock, it may still
jump forward by huge amounts, but should be immune to going
backwards. Fixes bug #134.
(quagga_gettimeofday_relative_adjust) helper, does what name
says - adjusts gettimeofday based relative timer.
(quagga_gettimeofday) helper to keep recent_time up to date.
(quagga_get_relative) helper, update and getch the relative
timer using gettimeofday(). POSIX CLOCK_MONOTONIC is also
supported, but the code is not enabled yet nor tested.
(quagga_real_stabilised) helper, retrieve absolute time but
stabilised so as to never decrease.
(quagga_gettime) Exported interface, analogous to POSIX
clock_gettime() in interface, supporting several clocks.
(quagga_time) Exported interface, analogous to traditional
time(), will never decrease.
(recent_relative_time) Convenience function to retrieve
relative_time timeval, similar to existing recent_time absolute
timeval, for when an approximately recent value will do.
(remainder) Update to use above helpers.
(thread_getrusage) Previously was a macro, but needs to be
a function to twiddle with thread.c private stuff.
* thread.c: Point the GETRUSAGE macro at previous function.
Export quagga_gettime, quagga_time and recent_relative_time for
general use.
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 7a74439..01f45ba 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,30 @@
+2006-08-25 Paul Jakma <paul.jakma@sun.com>
+
+ * thread.c: (general) Add support for monotonic clock, it may still
+ jump forward by huge amounts, but should be immune to going
+ backwards. Fixes bug #134.
+ (quagga_gettimeofday_relative_adjust) helper, does what name
+ says - adjusts gettimeofday based relative timer.
+ (quagga_gettimeofday) helper to keep recent_time up to date.
+ (quagga_get_relative) helper, update and getch the relative
+ timer using gettimeofday(). POSIX CLOCK_MONOTONIC is also
+ supported, but the code is not enabled yet nor tested.
+ (quagga_real_stabilised) helper, retrieve absolute time but
+ stabilised so as to never decrease.
+ (quagga_gettime) Exported interface, analogous to POSIX
+ clock_gettime() in interface, supporting several clocks.
+ (quagga_time) Exported interface, analogous to traditional
+ time(), will never decrease.
+ (recent_relative_time) Convenience function to retrieve
+ relative_time timeval, similar to existing recent_time absolute
+ timeval, for when an approximately recent value will do.
+ (remainder) Update to use above helpers.
+ (thread_getrusage) Previously was a macro, but needs to be
+ a function to twiddle with thread.c private stuff.
+ * thread.c: Point the GETRUSAGE macro at previous function.
+ Export quagga_gettime, quagga_time and recent_relative_time for
+ general use.
+
2006-07-25 Paul Jakma <paul.jakma@sun.com>
* thread.h: (struct thread) Add a cache pointer to the struct