#include "palacios-stream.h"
#include "palacios-file.h"
#include "palacios-serial.h"
+#include "palacios-socket.h"
+#include "palacios-vnet.h"
+#include "palacios-packet.h"
+
+#ifdef CONFIG_DEBUG_FS
+#include "palacios-debugfs.h"
+#endif
MODULE_LICENSE("GPL");
+int mod_allocs = 0;
+int mod_frees = 0;
+
static int v3_major_num = 0;
switch (ioctl) {
case V3_START_GUEST:{
+ int vm_minor = 0;
struct v3_guest_img user_image;
struct v3_guest * guest = kmalloc(sizeof(struct v3_guest), GFP_KERNEL);
- int vm_minor = 0;
if (IS_ERR(guest)) {
printk("Error allocating Kernel guest_image\n");
break;
}
+
default:
printk("\tUnhandled\n");
return -EINVAL;
palacios_file_init();
palacios_init_console();
+
+#ifdef CONFIG_DEBUG_FS
+ palacios_init_debugfs();
+#endif
+
+#ifdef CONFIG_PALACIOS_SOCKET
+ palacios_socket_init();
+#endif
+
+#ifdef CONFIG_PALACIOS_PACKET
+ palacios_init_packet(NULL);
+#endif
+
+#ifdef CONFIG_PALACIOS_VNET
+ palacios_init_vnet();
+#endif
+
return 0;
failure1:
extern u32 mallocs;
extern u32 frees;
+
+ // should probably try to stop any guests
+
+
+
dev_t dev = MKDEV(v3_major_num, MAX_VMS + 1);
printk("Removing V3 Control device\n");
device_destroy(v3_class, dev);
class_destroy(v3_class);
+
+
+
+#ifdef CONFIG_DEBUG_FS
+ palacios_deinit_debugfs();
+#endif
+
+ palacios_file_deinit();
+ palacios_deinit_stream();
+
+ palacios_deinit_mm();
+
+ printk("Palacios Module Mallocs = %d, Frees = %d\n", mod_allocs, mod_frees);
}
module_init(v3_init);
module_exit(v3_exit);
+
+
+
+void * trace_malloc(size_t size, gfp_t flags) {
+ void * addr = NULL;
+
+ mod_allocs++;
+ addr = kmalloc(size, flags);
+
+ return addr;
+}
+
+
+void trace_free(const void * objp) {
+ mod_frees++;
+ kfree(objp);
+}