[ovs-dev] [eviction 04/12] timeval: New function time_boot_msec(), factored out of vlog.

Ben Pfaff blp at nicira.com
Mon Jan 23 21:43:09 UTC 2012


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 <blp at 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 <blp at 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 at openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev



More information about the dev mailing list