From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xen.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [PATCH v2 5/5] [RFC] Traditional console timestamps including milliseconds
Date: Fri, 28 Feb 2014 18:57:04 +0000 [thread overview]
Message-ID: <1393613824-13230-6-git-send-email-andrew.cooper3@citrix.com> (raw)
In-Reply-To: <1393613824-13230-1-git-send-email-andrew.cooper3@citrix.com>
Suggested-by: Don Slutz <dslutz@verizon.com>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
xen/arch/x86/time.c | 10 +++++++---
xen/drivers/char/console.c | 11 ++++++++++-
xen/include/asm-x86/time.h | 2 +-
3 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index 3da4def..884a522 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -1648,15 +1648,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 )
return (struct tm) { 0 };
seconds = NOW() + (wc_sec * 1000000000ull) + wc_nsec;
- do_div(seconds, 1000000000);
+ nsec = do_div(seconds, 1000000000);
+
+ if ( *ns )
+ *ns = nsec;
+
return gmtime(seconds);
}
diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index 652d02d..02f6599 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.mmmmmm] */
TSM_SINCE_BOOT /* [SSSSSS.mmmmmm] */
};
@@ -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_SINCE_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.%06"PRIu64"] ",
+ 1900 + tm.tm_year, tm.tm_mon + 1, tm.tm_mday,
+ tm.tm_hour, tm.tm_min, tm.tm_sec, nsec / 1000);
break;
case TSM_SINCE_BOOT:
diff --git a/xen/include/asm-x86/time.h b/xen/include/asm-x86/time.h
index 147b39e..2f9dbd1 100644
--- a/xen/include/asm-x86/time.h
+++ b/xen/include/asm-x86/time.h
@@ -49,7 +49,7 @@ int dom0_pit_access(struct ioreq *ioreq);
int cpu_frequency_change(u64 freq);
struct tm;
-struct tm wallclock_time(void);
+struct tm wallclock_time(uint64_t *ns);
void pit_broadcast_enter(void);
void pit_broadcast_exit(void);
--
1.7.10.4
next prev parent reply other threads:[~2014-02-28 18:57 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-28 18:56 [RFC PATCH v2 0/5] Improvements to console timestamps Andrew Cooper
2014-02-28 18:57 ` [PATCH v2 1/5] x86/time: Avoid redundant this_cpu() Andrew Cooper
2014-02-28 18:57 ` [PATCH v2 2/5] x86/time: Always count s_time from Xen boot Andrew Cooper
2014-03-03 10:59 ` David Vrabel
2014-03-06 16:01 ` [PATCH v3] " Tim Deegan
2014-03-06 16:15 ` Jan Beulich
2014-03-06 16:18 ` Andrew Cooper
2014-02-28 18:57 ` [PATCH v2 3/5] x86/time: Initialise time earlier during start_secondary() Andrew Cooper
2014-03-04 9:02 ` Jan Beulich
2014-03-04 10:40 ` Andrew Cooper
2014-02-28 18:57 ` [PATCH v2 4/5] [RFC] xen/console: Provide timestamps as an offset since boot Andrew Cooper
2014-03-03 10:53 ` David Vrabel
2014-02-28 18:57 ` Andrew Cooper [this message]
2014-03-01 4:06 ` [PATCH v2 5/5] [RFC] Traditional console timestamps including milliseconds Julien Grall
2014-03-03 10:35 ` Andrew Cooper
2014-03-04 9:14 ` Jan Beulich
2014-03-04 10:30 ` Andrew Cooper
2014-03-04 20:51 ` Don Slutz
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=1393613824-13230-6-git-send-email-andrew.cooper3@citrix.com \
--to=andrew.cooper3@citrix.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).