#include "palacios.h"
#include "palacios-mm.h"
#include "palacios-vm.h"
-#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 V3_CONFIG_EXT_INSPECTOR
-#include "palacios-inspector.h"
-#endif
+#include "linux-exts.h"
-#ifdef V3_CONFIG_KEYED_STREAMS
-#include "palacios-keyed-stream.h"
-#endif
MODULE_LICENSE("GPL");
struct class * v3_class = NULL;
static struct cdev ctrl_dev;
-void * v3_base_addr = NULL;
-unsigned int v3_pages = 0;
-
static int register_vm( void ) {
int i, j = 0;
int avail = 0;
for (i = 0; i < sizeof(v3_minor_map); i++) {
if (v3_minor_map[i] != 0xff) {
for (j = 0; j < 8; j++) {
- if (!v3_minor_map[i] & (0x1 << j)) {
+ if (!(v3_minor_map[i] & (0x1 << j))) {
avail = 1;
v3_minor_map[i] |= (0x1 << j);
break;
guest->img_size = user_image.size;
printk("Allocating kernel memory for guest image (%llu bytes)\n", user_image.size);
- guest->img = kmalloc(guest->img_size, GFP_KERNEL);
+ guest->img = vmalloc(guest->img_size);
if (IS_ERR(guest->img)) {
printk("Error: Could not allocate space for guest image\n");
printk("Launching VM\n");
- INIT_LIST_HEAD(&(guest->streams));
- INIT_LIST_HEAD(&(guest->files));
- INIT_LIST_HEAD(&(guest->sockets));
+ INIT_LIST_HEAD(&(guest->exts));
+
+
#ifdef V3_CONFIG_HOST_DEVICE
INIT_LIST_HEAD(&(guest->hostdev.devs));
#endif
};
-extern unsigned int v3_pages;
-extern void * v3_base_addr;
static int __init v3_init(void) {
dev_t dev = MKDEV(0, 0); // We dynamicallly assign the major number
palacios_init_mm();
+
+ // Initialize Palacios
+
+ palacios_vmm_init();
+
+
+ // initialize extensions
+ init_lnx_extensions();
+
+
v3_class = class_create(THIS_MODULE, "vms");
if (IS_ERR(v3_class)) {
printk("Failed to register V3 VM device class\n");
goto failure1;
}
- if ((v3_pages > 0) && (v3_base_addr != NULL)) {
- add_palacios_memory(__pa(v3_base_addr), v3_pages);
- }
- // Initialize Palacios
-
- palacios_vmm_init();
-#ifdef V3_CONFIG_STREAM
- palacios_init_stream();
-#endif
-
-#ifdef V3_CONFIG_FILE
- palacios_file_init();
-#endif
-
-#ifdef V3_CONFIG_KEYED_STREAMS
- palacios_init_keyed_streams();
-#endif
-
-#ifdef V3_CONFIG_CONSOLE
- palacios_init_console();
-#endif
-
-#ifdef V3_CONFIG_GRAPHICS_CONSOLE
- palacios_init_graphics_console();
-#endif
-
-#ifdef V3_CONFIG_EXT_INSPECTOR
- palacios_init_inspector();
-#endif
-#ifdef V3_CONFIG_SOCKET
- palacios_socket_init();
-#endif
-#ifdef V3_CONFIG_PACKET
- palacios_init_packet(NULL);
-#endif
#ifdef V3_CONFIG_VNET
- palacios_init_vnet();
+ palacios_vnet_init();
#endif
#ifdef V3_CONFIG_HOST_DEVICE
class_destroy(v3_class);
+ deinit_lnx_extensions();
-#ifdef V3_CONFIG_EXT_INSPECTOR
- palacios_deinit_inspector();
-#endif
-#ifdef V3_CONFIG_FILE
- palacios_file_deinit();
-#endif
-#ifdef V3_CONFIG_STREAM
- palacios_deinit_stream();
+#ifdef V3_CONFIG_VNET
+ palacios_vnet_deinit();
#endif
palacios_deinit_mm();