浏览代码

xen: add raw console write functions for debug

Add a couple of functions which can write directly to the Xen console
for debugging.  This output ends up on the host's dom0 console
(assuming it allows the domain to write there).

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Jeremy Fitzhardinge 17 年之前
父节点
当前提交
0acf10d8fb
共有 2 个文件被更改,包括 29 次插入0 次删除
  1. 26 0
      drivers/char/hvc_xen.c
  2. 3 0
      include/xen/hvc-console.h

+ 26 - 0
drivers/char/hvc_xen.c

@@ -157,3 +157,29 @@ struct console xenboot_console = {
 	.write		= xenboot_write_console,
 	.write		= xenboot_write_console,
 	.flags		= CON_PRINTBUFFER | CON_BOOT,
 	.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);
+}

+ 3 - 0
include/xen/hvc-console.h

@@ -3,4 +3,7 @@
 
 
 extern struct console xenboot_console;
 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 */
 #endif	/* XEN_HVC_CONSOLE_H */