From 4ae90ff9e2011d54f52043a55707d16c8a9a258e Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Wed, 11 Jan 2012 17:12:17 -0800 Subject: [PATCH] timeval: New function time_boot_msec(), factored out of vlog. An upcoming commit has a new use for the time at which OVS started up, so this moves this functionality to a common location. Signed-off-by: Ben Pfaff --- lib/timeval.c | 20 +++++++++++++++----- lib/timeval.h | 4 +++- lib/vlog.c | 8 ++------ 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/lib/timeval.c b/lib/timeval.c index c8c02bdc..8097ce80 100644 --- a/lib/timeval.c +++ b/lib/timeval.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,6 +51,9 @@ static volatile sig_atomic_t monotonic_tick = true; static struct timespec wall_time; static struct timespec monotonic_time; +/* The monotonic time at which the time module was initialized. */ +static long long int boot_time; + /* Fixed monotonic time offset, for use by unit tests. */ static struct timespec warp_offset; @@ -71,10 +74,7 @@ static void refresh_rusage(void); static void timespec_add(struct timespec *sum, const struct timespec *a, const struct timespec *b); -/* Initializes the timetracking module. - * - * It is not necessary to call this function directly, because other time - * functions will call it automatically, but it doesn't hurt. */ +/* Initializes the timetracking module, if not already initialized. */ static void time_init(void) { @@ -95,6 +95,7 @@ time_init(void) set_up_signal(SA_RESTART); set_up_timer(); + boot_time = time_msec(); } static void @@ -402,6 +403,15 @@ timeval_to_msec(const struct timeval *tv) return (long long int) tv->tv_sec * 1000 + tv->tv_usec / 1000; } +/* Returns the monotonic time at which the "time" module was initialized, in + * milliseconds(). */ +long long int +time_boot_msec(void) +{ + time_init(); + return boot_time; +} + void xgettimeofday(struct timeval *tv) { diff --git a/lib/timeval.h b/lib/timeval.h index e57f7ac7..e9ff1832 100644 --- a/lib/timeval.h +++ b/lib/timeval.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -65,6 +65,8 @@ void xgettimeofday(struct timeval *); int get_cpu_usage(void); +long long int time_boot_msec(void); + #ifdef __cplusplus } #endif diff --git a/lib/vlog.c b/lib/vlog.c index 7d9c061e..5d92a4b6 100644 --- a/lib/vlog.c +++ b/lib/vlog.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -82,9 +82,6 @@ static struct facility facilities[VLF_N_FACILITIES] = { #undef VLOG_FACILITY }; -/* Time at which vlog was initialized, in milliseconds. */ -static long long int boot_time; - /* VLF_FILE configuration. */ static char *log_file_name; static FILE *log_file; @@ -480,7 +477,6 @@ vlog_init(void) openlog(program_name, LOG_NDELAY, LOG_DAEMON); - boot_time = time_msec(); now = time_wall(); if (now < 0) { struct tm tm; @@ -639,7 +635,7 @@ format_log_message(const struct vlog_module *module, enum vlog_level level, ds_put_format(s, "%ld", (long int) getpid()); break; case 'r': - ds_put_format(s, "%lld", time_msec() - boot_time); + ds_put_format(s, "%lld", time_msec() - time_boot_msec()); break; default: ds_put_char(s, p[-1]); -- 2.30.2