/*
- Palacios VNET Host Hooks Implementations
- (c) Lei Xia, 2011
+ * Palacios VNET Host Hooks Implementations
+ * Lei Xia 2010
*/
+
#include <linux/kernel.h>
#include <linux/kthread.h>
#include <linux/spinlock.h>
#include <linux/sched.h>
#include <linux/uaccess.h>
#include <linux/init.h>
-#include <linux/smp_lock.h>
#include <asm/delay.h>
#include <linux/timer.h>
#include <vnet/vnet.h>
-#include "palacios-mm.h"
+#include "mm.h"
+#include "palacios.h"
#include "palacios-vnet.h"
+#include "linux-exts.h"
static void host_print(const char * fmt, ...) {
+#if V3_PRINTK_OLD_STYLE_OUTPUT
- va_list ap;
- va_start(ap, fmt);
- vprintk(fmt, ap);
- va_end(ap);
+ va_list ap;
- return;
+ va_start(ap, fmt);
+ vprintk(fmt, ap);
+ va_end(ap);
+
+ return
+
+#else
+
+ va_list ap;
+ char *buf;
+
+ // Allocate space atomically, in case we are called
+ // with a lock held
+ buf = kmalloc(V3_PRINTK_BUF_SIZE, GFP_ATOMIC);
+ if (!buf) {
+ printk("palacios: output skipped - unable to allocate\n");
+ return;
+ }
+
+ va_start(ap, fmt);
+ vsnprintf(buf,V3_PRINTK_BUF_SIZE, fmt, ap);
+ va_end(ap);
+
+ printk(KERN_INFO "palacios: %s",buf);
+
+ kfree(buf);
+
+ return;
+
+#endif
}
vnet_bridge_init();
vnet_ctrl_init();
- printk("V3 VNET Inited\n");
+ INFO("V3 VNET Inited\n");
return 0;
}
vnet_bridge_deinit();
vnet_ctrl_deinit();
- printk("V3 VNET Deinited\n");
+ INFO("V3 VNET Deinited\n");
return 0;
}