WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] xen: Changes to printk handling:

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] xen: Changes to printk handling:
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 04 Oct 2007 17:41:50 -0700
Delivery-date: Thu, 04 Oct 2007 18:31:33 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir@xxxxxxxxxxxxx>
# Date 1191517096 -3600
# Node ID 2d761ca771fb2c19d06a4835bfaca33d76a742f4
# Parent  65c4977850d71c759062019bee3e62c3d335e439
xen: Changes to printk handling:
 1. Command-line option 'console_timestamps' adds a timestamp prefix
 to each line of Xen console output (x86 only, after CMOS has been
 interrogated).
 2. Clean up prefix handling and vanity banner info.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 xen/arch/ia64/xen/xensetup.c   |    1 
 xen/arch/x86/time.c            |   12 ++++++++++
 xen/drivers/char/console.c     |   46 ++++++++++++++++++++++++++---------------
 xen/include/asm-ia64/time.h    |    7 ++++++
 xen/include/asm-powerpc/time.h |    3 ++
 xen/include/asm-x86/time.h     |    3 ++
 xen/include/xen/console.h      |    2 -
 7 files changed, 55 insertions(+), 19 deletions(-)

diff -r 65c4977850d7 -r 2d761ca771fb xen/arch/ia64/xen/xensetup.c
--- a/xen/arch/ia64/xen/xensetup.c      Thu Oct 04 14:21:11 2007 +0100
+++ b/xen/arch/ia64/xen/xensetup.c      Thu Oct 04 17:58:16 2007 +0100
@@ -315,7 +315,6 @@ void __init start_kernel(void)
 #endif
 
     init_console();
-    set_printk_prefix("(XEN) ");
 
     if (running_on_sim || ia64_boot_param->domain_start == 0 ||
                           ia64_boot_param->domain_size == 0) {
diff -r 65c4977850d7 -r 2d761ca771fb xen/arch/x86/time.c
--- a/xen/arch/x86/time.c       Thu Oct 04 14:21:11 2007 +0100
+++ b/xen/arch/x86/time.c       Thu Oct 04 17:58:16 2007 +0100
@@ -1038,6 +1038,18 @@ int dom0_pit_access(struct ioreq *ioreq)
     return 0;
 }
 
+struct tm wallclock_time(void)
+{
+    uint64_t seconds;
+
+    if ( !wc_sec )
+        return (struct tm) { 0 };
+
+    seconds = NOW() + (wc_sec * 1000000000ull) + wc_nsec;
+    do_div(seconds, 1000000000);
+    return gmtime(seconds);
+}
+
 /*
  * Local variables:
  * mode: C
diff -r 65c4977850d7 -r 2d761ca771fb xen/drivers/char/console.c
--- a/xen/drivers/char/console.c        Thu Oct 04 14:21:11 2007 +0100
+++ b/xen/drivers/char/console.c        Thu Oct 04 17:58:16 2007 +0100
@@ -53,12 +53,14 @@ static int opt_console_to_ring;
 static int opt_console_to_ring;
 boolean_param("console_to_ring", opt_console_to_ring);
 
+/* console_timestamps: include a timestamp prefix on every Xen console line. */
+static int opt_console_timestamps;
+boolean_param("console_timestamps", opt_console_timestamps);
+
 #define CONRING_SIZE 16384
 #define CONRING_IDX_MASK(i) ((i)&(CONRING_SIZE-1))
 static char conring[CONRING_SIZE];
 static unsigned int conringc, conringp;
-
-static char printk_prefix[16] = "";
 
 static int sercon_handle = -1;
 
@@ -448,6 +450,26 @@ static int printk_prefix_check(char *p, 
             ((loglvl < upper_thresh) && printk_ratelimit()));
 } 
 
+static void printk_start_of_line(void)
+{
+    struct tm tm;
+    char tstr[32];
+
+    __putstr("(XEN) ");
+
+    if ( !opt_console_timestamps )
+        return;
+
+    tm = wallclock_time();
+    if ( tm.tm_mday == 0 )
+        return;
+
+    snprintf(tstr, sizeof(tstr), "[%04u-%02u-%02u %02u:%02u:%02u] ",
+             1900 + tm.tm_year, tm.tm_mon, tm.tm_mday,
+             tm.tm_hour, tm.tm_min, tm.tm_sec);
+    __putstr(tstr);
+}
+
 void printk(const char *fmt, ...)
 {
     static char   buf[1024];
@@ -475,7 +497,7 @@ void printk(const char *fmt, ...)
         if ( do_print )
         {
             if ( start_of_line )
-                __putstr(printk_prefix);
+                printk_start_of_line();
             __putstr(p);
             __putstr("\n");
         }
@@ -490,7 +512,7 @@ void printk(const char *fmt, ...)
         if ( do_print )
         {
             if ( start_of_line )
-                __putstr(printk_prefix);
+                printk_start_of_line();
             __putstr(p);
         }
         start_of_line = 0;
@@ -498,11 +520,6 @@ void printk(const char *fmt, ...)
 
     spin_unlock_recursive(&console_lock);
     local_irq_restore(flags);
-}
-
-void set_printk_prefix(const char *prefix)
-{
-    safe_strcpy(printk_prefix, prefix);
 }
 
 void __init init_console(void)
@@ -523,15 +540,12 @@ void __init init_console(void)
     serial_set_rx_handler(sercon_handle, serial_rx);
 
     /* HELLO WORLD --- start-of-day banner text. */
-    printk(xen_banner());
-    printk(" http://www.cl.cam.ac.uk/netos/xen\n";);
-    printk(" University of Cambridge Computer Laboratory\n\n");
-    printk(" Xen version %d.%d%s (%s@%s) (%s) %s\n",
+    __putstr(xen_banner());
+    printk("Xen version %d.%d%s (%s@%s) (%s) %s\n",
            xen_major_version(), xen_minor_version(), xen_extra_version(),
            xen_compile_by(), xen_compile_domain(),
            xen_compiler(), xen_compile_date());
-    printk(" Latest ChangeSet: %s\n\n", xen_changeset());
-    set_printk_prefix("(XEN) ");
+    printk("Latest ChangeSet: %s\n", xen_changeset());
 
     if ( opt_sync_console )
     {
@@ -687,7 +701,7 @@ int __printk_ratelimit(int ratelimit_ms,
             snprintf(lost_str, sizeof(lost_str), "%d", lost);
             /* console_lock may already be acquired by printk(). */
             spin_lock_recursive(&console_lock);
-            __putstr(printk_prefix);
+            printk_start_of_line();
             __putstr("printk: ");
             __putstr(lost_str);
             __putstr(" messages suppressed.\n");
diff -r 65c4977850d7 -r 2d761ca771fb xen/include/asm-ia64/time.h
--- a/xen/include/asm-ia64/time.h       Thu Oct 04 14:21:11 2007 +0100
+++ b/xen/include/asm-ia64/time.h       Thu Oct 04 17:58:16 2007 +0100
@@ -1,2 +1,9 @@
+#ifndef _ASM_TIME_H_
+#define _ASM_TIME_H_
+
 #include <asm/linux/time.h>
 #include <asm/timex.h>
+
+#define wallclock_time() ((struct tm) { 0 })
+
+#endif /* _ASM_TIME_H_ */
diff -r 65c4977850d7 -r 2d761ca771fb xen/include/asm-powerpc/time.h
--- a/xen/include/asm-powerpc/time.h    Thu Oct 04 14:21:11 2007 +0100
+++ b/xen/include/asm-powerpc/time.h    Thu Oct 04 17:58:16 2007 +0100
@@ -80,4 +80,7 @@ static inline u64 tb_to_ns(u64 tb)
 {
     return tb * (__nano(1) / timebase_freq);
 }
+
+#define wallclock_time() ((struct tm) { 0 })
+
 #endif
diff -r 65c4977850d7 -r 2d761ca771fb xen/include/asm-x86/time.h
--- a/xen/include/asm-x86/time.h        Thu Oct 04 14:21:11 2007 +0100
+++ b/xen/include/asm-x86/time.h        Thu Oct 04 17:58:16 2007 +0100
@@ -31,4 +31,7 @@ int dom0_pit_access(struct ioreq *ioreq)
 
 int cpu_frequency_change(u64 freq);
 
+struct tm;
+struct tm wallclock_time(void);
+
 #endif /* __X86_TIME_H__ */
diff -r 65c4977850d7 -r 2d761ca771fb xen/include/xen/console.h
--- a/xen/include/xen/console.h Thu Oct 04 14:21:11 2007 +0100
+++ b/xen/include/xen/console.h Thu Oct 04 17:58:16 2007 +0100
@@ -10,8 +10,6 @@
 #include <xen/spinlock.h>
 #include <xen/guest_access.h>
 #include <public/xen.h>
-
-void set_printk_prefix(const char *prefix);
 
 long read_console_ring(XEN_GUEST_HANDLE(char), u32 *, int);
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] xen: Changes to printk handling:, Xen patchbot-unstable <=