From 15017a8ca8775374712fbb9b427f32188706be99 Mon Sep 17 00:00:00 2001 From: Jeremy Fitzhardinge Date: Mon, 26 May 2008 23:30:59 +0100 Subject: [PATCH] --- yaml --- r: 99532 b: refs/heads/master c: 0acf10d8fbd52926217d3933d196b33fe2468f18 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/char/hvc_xen.c | 26 ++++++++++++++++++++++++++ trunk/include/xen/hvc-console.h | 3 +++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 8b79e8707937..c8d89ff0ca2a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3843fc2575e3389f4f0ad0420a720240a5746a5d +refs/heads/master: 0acf10d8fbd52926217d3933d196b33fe2468f18 diff --git a/trunk/drivers/char/hvc_xen.c b/trunk/drivers/char/hvc_xen.c index dd68f8541c2d..e97d9d168325 100644 --- a/trunk/drivers/char/hvc_xen.c +++ b/trunk/drivers/char/hvc_xen.c @@ -157,3 +157,29 @@ struct console xenboot_console = { .write = xenboot_write_console, .flags = CON_PRINTBUFFER | CON_BOOT, }; + +void xen_raw_console_write(const char *str) +{ + int len = strlen(str); + + while(len > 0) { + int rc = HYPERVISOR_console_io(CONSOLEIO_write, len, (char *)str); + if (rc <= 0) + break; + + str += rc; + len -= rc; + } +} + +void xen_raw_printk(const char *fmt, ...) +{ + static char buf[512]; + va_list ap; + + va_start(ap, fmt); + vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + + xen_raw_console_write(buf); +} diff --git a/trunk/include/xen/hvc-console.h b/trunk/include/xen/hvc-console.h index 21c0ecfd786d..efc3237ab990 100644 --- a/trunk/include/xen/hvc-console.h +++ b/trunk/include/xen/hvc-console.h @@ -3,4 +3,7 @@ extern struct console xenboot_console; +void xen_raw_console_write(const char *str); +void xen_raw_printk(const char *fmt, ...); + #endif /* XEN_HVC_CONSOLE_H */