All of lore.kernel.org
 help / color / mirror / Atom feed
From: Don Slutz <dslutz@verizon.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>,
	Xen-devel <xen-devel@lists.xen.org>
Cc: Tim Deegan <tim@xen.org>, Jan Beulich <JBeulich@suse.com>,
	Keir Fraser <keir@xen.org>,
	Ian Campbell <ian.campbell@citrix.com>,
	Stefano Stabellini <stefano.stabellini@citrix.com>
Subject: Re: [PATCH v3 5/5] xen/console: Traditional console timestamps including milliseconds
Date: Thu, 06 Mar 2014 18:54:24 -0500	[thread overview]
Message-ID: <53190AB0.4020806@terremark.com> (raw)
In-Reply-To: <1394134085-22952-6-git-send-email-andrew.cooper3@citrix.com>

On 03/06/14 14:28, Andrew Cooper wrote:
> Suggested-by: Don Slutz <dslutz@verizon.com>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> CC: Keir Fraser <keir@xen.org>
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Ian Campbell <ian.campbell@citrix.com>
> CC: Stefano Stabellini <stefano.stabellini@citrix.com>
> CC: Tim Deegan <tim@xen.org>
>
> ---
>
> The change in arm is only for the sake of compilation - the function is a
> no-op.
> ---
>   docs/misc/xen-command-line.markdown |    4 +++-
>   xen/arch/arm/time.c                 |    2 +-
>   xen/arch/x86/time.c                 |   10 +++++++---
>   xen/drivers/char/console.c          |   11 ++++++++++-
>   xen/include/xen/time.h              |    2 +-
>   5 files changed, 22 insertions(+), 7 deletions(-)
>
> diff --git a/docs/misc/xen-command-line.markdown b/docs/misc/xen-command-line.markdown
> index 98c9e5e..89dc484 100644
> --- a/docs/misc/xen-command-line.markdown
> +++ b/docs/misc/xen-command-line.markdown
> @@ -275,7 +275,7 @@ cleared.  This allows a single port to be shared by two subsystems
>   makes sense on its own.
>   
>   ### console\_timestamps
> -> `= none | date | boot`
> +> `= none | date | datems | boot`
>   
>   > Default: `boot`
>   
> @@ -284,6 +284,8 @@ Specify which timestamp format Xen should use for each console line.
>   * `none`: No timestamps
>   * `date`: Date and time information
>       * `[YYYY-MM-DD HH:MM:SS]`
> +* `datems`: Date and time, with milliseconds
> +    * `[YYYY-MM-DD HH:MM:SS.mmm]`
>   * `boot`: Seconds and microseconds since boot
>       * `[SSSSSS.uuuuuu]`
>   
> diff --git a/xen/arch/arm/time.c b/xen/arch/arm/time.c
> index 81e3e28..22e94bb 100644
> --- a/xen/arch/arm/time.c
> +++ b/xen/arch/arm/time.c
> @@ -282,7 +282,7 @@ void domain_set_time_offset(struct domain *d, int32_t time_offset_seconds)
>       /* XXX update guest visible wallclock time */
>   }
>   
> -struct tm wallclock_time(void)
> +struct tm wallclock_time(uint64_t *ns)
>   {

Adding:

    if ( ns )
       *ns = 0;

Makes sense here.

>       return (struct tm) { 0 };
>   }
> diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
> index 4f4de22..1156ccc 100644
> --- a/xen/arch/x86/time.c
> +++ b/xen/arch/x86/time.c
> @@ -1646,15 +1646,19 @@ int dom0_pit_access(struct ioreq *ioreq)
>       return 0;
>   }
>   
> -struct tm wallclock_time(void)
> +struct tm wallclock_time(uint64_t *ns)
>   {
> -    uint64_t seconds;
> +    uint64_t seconds, nsec;
>   
>       if ( !wc_sec )

And here.

>           return (struct tm) { 0 };
>   
>       seconds = NOW() + SECONDS(wc_sec) + wc_nsec;
> -    do_div(seconds, 1000000000);
> +    nsec = do_div(seconds, 1000000000);
> +
> +    if ( *ns )

This should be just

    if ( ns )


     -Don Slutz

> +        *ns = nsec;
> +
>       return gmtime(seconds);
>   }
>   
> diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
> index 60461b9..837e8a8 100644
> --- a/xen/drivers/char/console.c
> +++ b/xen/drivers/char/console.c
> @@ -53,6 +53,7 @@ enum con_timestamp_mode
>   {
>       TSM_NONE,          /* No timestamps */
>       TSM_DATE,          /* [YYYY-MM-DD HH:MM:SS] */
> +    TSM_DATE_MS,       /* [YYYY-MM-DD HH:MM:SS.mmm] */
>       TSM_BOOT           /* [SSSSSS.uuuuuu] */
>   };
>   
> @@ -560,6 +561,8 @@ static void __init parse_console_timestamps(char *s)
>       if ( *s == '\0' || /* Compat for old booleanparam() */
>            !strcmp(s, "date") )
>           opt_con_timestamp_mode = TSM_DATE;
> +    else if ( !strcmp(s, "datems") )
> +        opt_con_timestamp_mode = TSM_DATE_MS;
>       else if ( !strcmp(s, "boot") )
>           opt_con_timestamp_mode = TSM_BOOT;
>       else if ( !strcmp(s, "none") )
> @@ -579,7 +582,8 @@ static void printk_start_of_line(const char *prefix)
>       switch ( opt_con_timestamp_mode )
>       {
>       case TSM_DATE:
> -        tm = wallclock_time();
> +    case TSM_DATE_MS:
> +        tm = wallclock_time(&nsec);
>   
>           if ( tm.tm_mday == 0 )
>               return;
> @@ -588,6 +592,11 @@ static void printk_start_of_line(const char *prefix)
>               snprintf(tstr, sizeof(tstr), "[%04u-%02u-%02u %02u:%02u:%02u] ",
>                        1900 + tm.tm_year, tm.tm_mon + 1, tm.tm_mday,
>                        tm.tm_hour, tm.tm_min, tm.tm_sec);
> +        else
> +            snprintf(tstr, sizeof(tstr),
> +                     "[%04u-%02u-%02u %02u:%02u:%02u.%03"PRIu64"] ",
> +                     1900 + tm.tm_year, tm.tm_mon + 1, tm.tm_mday,
> +                     tm.tm_hour, tm.tm_min, tm.tm_sec, nsec / 1000000);
>           break;
>   
>       case TSM_BOOT:
> diff --git a/xen/include/xen/time.h b/xen/include/xen/time.h
> index 3eb5b63..2703454 100644
> --- a/xen/include/xen/time.h
> +++ b/xen/include/xen/time.h
> @@ -48,7 +48,7 @@ struct tm {
>       int     tm_isdst;       /* daylight saving time */
>   };
>   struct tm gmtime(unsigned long t);
> -struct tm wallclock_time(void);
> +struct tm wallclock_time(uint64_t *ns);
>   
>   #define SYSTEM_TIME_HZ  1000000000ULL
>   #define NOW()           ((s_time_t)get_s_time())

  reply	other threads:[~2014-03-06 23:54 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-06 19:28 [PATCH v3 0/5] Improvements to console timestamps Andrew Cooper
2014-03-06 19:28 ` [PATCH v3 1/5] xen/time: Move wallclock_time() declaration into common code Andrew Cooper
2014-03-06 19:28 ` [PATCH v3 2/5] x86/time: Always count s_time from Xen boot Andrew Cooper
2014-03-06 19:28 ` [PATCH v3 3/5] x86/time: Initialise time earlier during start_secondary() Andrew Cooper
2014-03-06 19:28 ` [PATCH v3 4/5] xen/console: Provide timestamps as an offset since boot Andrew Cooper
2014-03-07  9:47   ` Jan Beulich
2014-03-07 10:27     ` Andrew Cooper
2014-03-06 19:28 ` [PATCH v3 5/5] xen/console: Traditional console timestamps including milliseconds Andrew Cooper
2014-03-06 23:54   ` Don Slutz [this message]
2014-03-07  0:41     ` Andrew Cooper
2014-03-07 23:33       ` Don Slutz
2014-03-11 10:43         ` Ian Campbell
2014-03-11 11:32           ` Andrew Cooper
2014-03-11 11:39             ` Tim Deegan
2014-03-11 12:47             ` Jan Beulich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53190AB0.4020806@terremark.com \
    --to=dslutz@verizon.com \
    --cc=JBeulich@suse.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=ian.campbell@citrix.com \
    --cc=keir@xen.org \
    --cc=stefano.stabellini@citrix.com \
    --cc=tim@xen.org \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.