Signed-off-by: Ben Pfaff <b...@nicira.com>
---
 lib/timeval.c |   14 ++++++++++++--
 lib/timeval.h |    1 +
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/lib/timeval.c b/lib/timeval.c
index 87dab37..a13b87d 100644
--- a/lib/timeval.c
+++ b/lib/timeval.c
@@ -207,7 +207,7 @@ static void
 refresh_wall(void)
 {
     time_init();
-    clock_gettime(CLOCK_REALTIME, &wall_time);
+    xclock_gettime(CLOCK_REALTIME, &wall_time);
     wall_tick = false;
 }
 
@@ -218,7 +218,7 @@ refresh_monotonic(void)
 
     if (!time_stopped) {
         if (monotonic_clock == CLOCK_MONOTONIC) {
-            clock_gettime(monotonic_clock, &monotonic_time);
+            xclock_gettime(monotonic_clock, &monotonic_time);
         } else {
             refresh_wall_if_ticked();
             monotonic_time = wall_time;
@@ -470,6 +470,16 @@ xgettimeofday(struct timeval *tv)
     }
 }
 
+void
+xclock_gettime(clock_t id, struct timespec *ts)
+{
+    if (clock_gettime(id, ts) == -1) {
+        /* It seems like a bad idea to try to use vlog here because it is
+         * likely to try to check the current time. */
+        ovs_abort(errno, "xclock_gettime() failed");
+    }
+}
+
 static long long int
 timeval_diff_msec(const struct timeval *a, const struct timeval *b)
 {
diff --git a/lib/timeval.h b/lib/timeval.h
index eff28e2..7bf8d1f 100644
--- a/lib/timeval.h
+++ b/lib/timeval.h
@@ -73,6 +73,7 @@ long long int timespec_to_msec(const struct timespec *);
 long long int timeval_to_msec(const struct timeval *);
 
 void xgettimeofday(struct timeval *);
+void xclock_gettime(clock_t, struct timespec *);
 
 int get_cpu_usage(void);
 void format_backtraces(struct ds *, size_t min_count);
-- 
1.7.2.5

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to