⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xen-mm

📁 xen虚拟机源代码安装包
💻
字号:
Index: ioemu/hw/pc.c===================================================================--- ioemu.orig/hw/pc.c	2007-05-03 19:08:13.000000000 +0100+++ ioemu/hw/pc.c	2007-05-03 19:08:19.000000000 +0100@@ -481,7 +481,9 @@     }      /* allocate RAM */+#ifndef CONFIG_DM		/* HVM domain owns memory */     cpu_register_physical_memory(0, ram_size, 0);+#endif      /* BIOS load */     bios_offset = ram_size + vga_ram_size;@@ -510,8 +512,10 @@     ret = load_image(buf, phys_ram_base + vga_bios_offset);          /* setup basic memory access */+#ifndef CONFIG_DM		/* HVM domain owns memory */     cpu_register_physical_memory(0xc0000, 0x10000,                                   vga_bios_offset | IO_MEM_ROM);+#endif      /* map the last 128KB of the BIOS in ISA space */     isa_bios_size = bios_size;Index: ioemu/vl.c===================================================================--- ioemu.orig/vl.c	2007-05-03 19:08:13.000000000 +0100+++ ioemu/vl.c	2007-05-03 19:08:57.000000000 +0100@@ -89,6 +89,7 @@  #include "exec-all.h" +#include <xen/hvm/params.h> #define DEFAULT_NETWORK_SCRIPT "/etc/xen/qemu-ifup" #ifdef __sun__ #define SMBD_COMMAND "/usr/sfw/sbin/smbd"@@ -175,6 +176,8 @@ int semihosting_enabled = 0; int autostart = 1; +int xc_handle;+ char domain_name[1024] = { 'H','V', 'M', 'X', 'E', 'N', '-'}; extern int domid; @@ -6565,6 +6568,9 @@     char usb_devices[MAX_USB_CMDLINE][128];     int usb_devices_index;     int fds[2];+    unsigned long ioreq_pfn;+    extern void *shared_page;+    unsigned long nr_pages;      char qemu_dm_logfilename[64]; @@ -6839,11 +6845,13 @@                 ram_size = atol(optarg) * 1024 * 1024;                 if (ram_size <= 0)                     help();+#ifndef CONFIG_DM                 if (ram_size > PHYS_RAM_MAX_SIZE) {                     fprintf(stderr, "qemu: at most %d MB RAM can be simulated\n",                             PHYS_RAM_MAX_SIZE / (1024 * 1024));                     exit(1);                 }+#endif /* !CONFIG_DM */                 break;             case QEMU_OPTION_l:                 {@@ -7153,12 +7161,53 @@ 	phys_ram_size += ret;     } +#ifdef CONFIG_DM++    xc_handle = xc_interface_open();++#if defined(__i386__) || defined(__x86_64__)++    nr_pages = ram_size/PAGE_SIZE;++    page_array = (xen_pfn_t *)malloc(nr_pages * sizeof(xen_pfn_t));+    if (page_array == NULL) {+        fprintf(logfile, "malloc returned error %d\n", errno);+        exit(-1);+    }++    for ( i = 0; i < nr_pages; i++)+        page_array[i] = i;++    phys_ram_base = xc_map_foreign_batch(xc_handle, domid,+                                         PROT_READ|PROT_WRITE, page_array,+                                         nr_pages);+    if (phys_ram_base == NULL) {+        fprintf(logfile, "batch map guest memory returned error %d\n", errno);+        exit(-1);+    }++    xc_get_hvm_param(xc_handle, domid, HVM_PARAM_IOREQ_PFN, &ioreq_pfn);+    fprintf(logfile, "shared page at pfn %lx\n", ioreq_pfn);+    shared_page = xc_map_foreign_range(xc_handle, domid, PAGE_SIZE,+                                       PROT_READ|PROT_WRITE,+                                       page_array[ioreq_pfn]);+    if (shared_page == NULL) {+        fprintf(logfile, "map shared IO page returned error %d\n", errno);+        exit(-1);+    }++    free(page_array);++#else  /* !CONFIG_DM */+     phys_ram_base = qemu_vmalloc(phys_ram_size);     if (!phys_ram_base) {         fprintf(stderr, "Could not allocate physical memory\n");         exit(1);     } +#endif /* !CONFIG_DM */+     /* we always create the cdrom drive, even if no disk is there */     bdrv_init();     if (cdrom_index >= 0) {Index: ioemu/vl.h===================================================================--- ioemu.orig/vl.h	2007-05-03 19:08:13.000000000 +0100+++ ioemu/vl.h	2007-05-03 19:08:19.000000000 +0100@@ -39,6 +39,7 @@ #include <sys/stat.h> #include "xenctrl.h" #include "xs.h"+#include <xen/hvm/e820.h>  #ifndef O_LARGEFILE #define O_LARGEFILE 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -