diff options
Diffstat (limited to 'drivers/char/hvc_xen.c')
-rw-r--r-- | drivers/char/hvc_xen.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/char/hvc_xen.c b/drivers/char/hvc_xen.c index dd68f8541c2d..e97d9d168325 100644 --- a/drivers/char/hvc_xen.c +++ b/drivers/char/hvc_xen.c | |||
@@ -157,3 +157,29 @@ struct console xenboot_console = { | |||
157 | .write = xenboot_write_console, | 157 | .write = xenboot_write_console, |
158 | .flags = CON_PRINTBUFFER | CON_BOOT, | 158 | .flags = CON_PRINTBUFFER | CON_BOOT, |
159 | }; | 159 | }; |
160 | |||
161 | void xen_raw_console_write(const char *str) | ||
162 | { | ||
163 | int len = strlen(str); | ||
164 | |||
165 | while(len > 0) { | ||
166 | int rc = HYPERVISOR_console_io(CONSOLEIO_write, len, (char *)str); | ||
167 | if (rc <= 0) | ||
168 | break; | ||
169 | |||
170 | str += rc; | ||
171 | len -= rc; | ||
172 | } | ||
173 | } | ||
174 | |||
175 | void xen_raw_printk(const char *fmt, ...) | ||
176 | { | ||
177 | static char buf[512]; | ||
178 | va_list ap; | ||
179 | |||
180 | va_start(ap, fmt); | ||
181 | vsnprintf(buf, sizeof(buf), fmt, ap); | ||
182 | va_end(ap); | ||
183 | |||
184 | xen_raw_console_write(buf); | ||
185 | } | ||