We had explicit calls to time_init() a long time ago but it was hard to maintain.
On Mon, Jan 23, 2012 at 01:25:34PM -0800, Ethan Jackson wrote: > I would think that you would want to explicitly call time_init() from > main or something. It probably doesn't matter as time_msec() will > probably be called pretty quickly after startup. Just seems a bit > more straightforward to me. > > Looks good, > Ethan > > On Fri, Jan 13, 2012 at 16:43, Ben Pfaff <b...@nicira.com> wrote: > > 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 <b...@nicira.com> > > --- > > ?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 c8c02bd..8097ce8 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 e57f7ac..e9ff183 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 0d7f4d1..3a04f99 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; > > @@ -635,7 +631,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]); > > -- > > 1.7.2.5 > > > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev