> 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

Reply via email to