timeval: New function xclock_gettime().
authorBen Pfaff <blp@nicira.com>
Thu, 11 Jul 2013 23:50:15 +0000 (16:50 -0700)
committerBen Pfaff <blp@nicira.com>
Thu, 11 Jul 2013 23:50:15 +0000 (16:50 -0700)
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ed Maste <emaste@freebsd.org>
lib/timeval.c
lib/timeval.h

index 0ccfa42..65c85a0 100644 (file)
@@ -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;
@@ -460,6 +460,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)
 {
index eff28e2..7bf8d1f 100644 (file)
@@ -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);