Signed-off-by: Ben Pfaff <[email protected]>
---
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
[email protected]
http://openvswitch.org/mailman/listinfo/dev