register_console_callback(pv_console_write);
}
-void printk(const char *fmt, ...)
+void vprintk(const char *fmt, va_list args)
{
+ static char buf[2048];
unsigned int i;
+ int rc;
+
+ rc = vsnprintf(buf, sizeof(buf), fmt, args);
for ( i = 0; i < nr_cons_cb; ++i )
- output_fns[i](fmt, strlen(fmt));
+ output_fns[i](buf, rc);
+}
+
+void printk(const char *fmt, ...)
+{
+ va_list args;
+
+ va_start(args, fmt);
+ vprintk(fmt, args);
+ va_end(args);
}
/*
#ifndef XTF_CONSOLE_H
#define XTF_CONSOLE_H
+#include <xtf/libc.h>
#include <xtf/compiler.h>
#include <xen/event_channel.h>
void init_pv_console(xencons_interface_t *ring,
evtchn_port_t port);
+void vprintk(const char *fmt, va_list args) __printf(1, 0);
void printk(const char *fmt, ...) __printf(1, 2);
#endif /* XTF_CONSOLE_H */