> We had explicit calls to time_init() a long time ago but it was hard > to maintain.
Alright. Ethan > > 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