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

Ethan Jackson ethan at nicira.com
Mon Jan 23 21:25:34 UTC 2012


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