# HG changeset patch
# User Jerone Young <[EMAIL PROTECTED]>
# Date 1193849564 18000
# Node ID c2ae34bff407fe7e3cfc695efdd1cfd4e2242403
# Parent  9c74b8e493e67f544c017b6bef8dd047c128c8d3
Move fuction kvm_alloc_kernel_memory to kvmctl-x86.c

Signed-off-by: Jerone Young <[EMAIL PROTECTED]>

diff --git a/libkvm/libkvm-x86.c b/libkvm/libkvm-x86.c
new file mode 100644
--- /dev/null
+++ b/libkvm/libkvm-x86.c
@@ -0,0 +1,81 @@
+#include "libkvm.h"
+#include <unistd.h>
+#include <stropts.h>
+#include <sys/mman.h>
+#include <stdio.h>
+
+int kvm_alloc_kernel_memory(kvm_context_t kvm, unsigned long memory,
+                                                               void **vm_mem)
+{
+       unsigned long dosmem = 0xa0000;
+       unsigned long exmem = 0xc0000;
+       unsigned long pcimem = 0xe0000000;
+       int r;
+       int tss_ext;
+       struct kvm_memory_region low_memory = {
+               .memory_size = memory  < dosmem ? memory : dosmem,
+               .guest_phys_addr = 0,
+       };
+       struct kvm_memory_region extended_memory = {
+               .memory_size = memory < exmem ? 0 : memory - exmem,
+               .guest_phys_addr = exmem,
+       };
+       struct kvm_memory_region above_4g_memory = {
+               .memory_size = memory < pcimem ? 0 : memory - pcimem,
+               .guest_phys_addr = 0x100000000ULL,
+       };
+
+#ifdef KVM_CAP_SET_TSS_ADDR
+       tss_ext = ioctl(kvm->fd, KVM_CHECK_EXTENSION, KVM_CAP_SET_TSS_ADDR);
+#else
+       tss_ext = 0;
+#endif
+
+       if (memory >= pcimem)
+               extended_memory.memory_size = pcimem - exmem;
+
+       /* 640K should be enough. */
+       low_memory.slot = get_free_slot(kvm);
+       r = ioctl(kvm->vm_fd, KVM_SET_MEMORY_REGION, &low_memory);
+       if (r == -1) {
+               fprintf(stderr, "kvm_create_memory_region: %m\n");
+               return -1;
+       }
+       register_slot(low_memory.slot, low_memory.guest_phys_addr);
+
+       if (extended_memory.memory_size) {
+               if (tss_ext > 0)
+                       extended_memory.slot = get_free_slot(kvm);
+               else
+                       extended_memory.slot = 0;
+               r = ioctl(kvm->vm_fd, KVM_SET_MEMORY_REGION, &extended_memory);
+               if (r == -1) {
+                       fprintf(stderr, "kvm_create_memory_region: %m\n");
+                       return -1;
+               }
+               register_slot(extended_memory.slot,
+                             extended_memory.guest_phys_addr);
+       }
+
+       if (above_4g_memory.memory_size) {
+               above_4g_memory.slot = get_free_slot(kvm);
+               r = ioctl(kvm->vm_fd, KVM_SET_MEMORY_REGION, &above_4g_memory);
+               if (r == -1) {
+                       fprintf(stderr, "kvm_create_memory_region: %m\n");
+                       return -1;
+               }
+               register_slot(above_4g_memory.slot,
+                             above_4g_memory.guest_phys_addr);
+       }
+
+       kvm_memory_region_save_params(kvm, &low_memory);
+       kvm_memory_region_save_params(kvm, &extended_memory);
+       kvm_memory_region_save_params(kvm, &above_4g_memory);
+       if (above_4g_memory.memory_size)
+               kvm_memory_region_save_params(kvm, &above_4g_memory);
+
+       *vm_mem = mmap(NULL, memory, PROT_READ|PROT_WRITE, MAP_SHARED, 
kvm->vm_fd, 0);
+
+       return 0;
+}
+
diff --git a/libkvm/libkvm-x86.h b/libkvm/libkvm-x86.h
--- a/libkvm/libkvm-x86.h
+++ b/libkvm/libkvm-x86.h
@@ -1,7 +1,15 @@
 #ifndef KVMCTL_X86_H
 #define KVMCTL_X86_H
 
+/* FIXME: share this number with kvm */
+/* FIXME: or dynamically alloc/realloc regions */
 #define KVM_MAX_NUM_MEM_REGIONS 8u
 #define MAX_VCPUS 4
 
+#define PAGE_SIZE 4096ul
+#define PAGE_MASK (~(PAGE_SIZE - 1))
+
+int kvm_alloc_kernel_memory(kvm_context_t kvm, unsigned long memory,
+                                                                void **vm_mem);
+
 #endif
diff --git a/libkvm/libkvm.c b/libkvm/libkvm.c
--- a/libkvm/libkvm.c
+++ b/libkvm/libkvm.c
@@ -39,11 +39,6 @@
 
 static int kvm_abi = EXPECTED_KVM_API_VERSION;
 
-#define PAGE_SIZE 4096ul
-#define PAGE_MASK (~(PAGE_SIZE - 1))
-
-/* FIXME: share this number with kvm */
-/* FIXME: or dynamically alloc/realloc regions */
 int free_slots[KVM_MAX_NUM_MEM_REGIONS];
 unsigned long phys_addr_slots[KVM_MAX_NUM_MEM_REGIONS];
 
@@ -317,82 +312,6 @@ int kvm_get_shadow_pages(kvm_context_t k
 #endif
        return -1;
 }
-
-int kvm_alloc_kernel_memory(kvm_context_t kvm, unsigned long memory,
-                                                               void **vm_mem)
-{
-       unsigned long dosmem = 0xa0000;
-       unsigned long exmem = 0xc0000;
-       unsigned long pcimem = 0xe0000000;
-       int r;
-       int tss_ext;
-       struct kvm_memory_region low_memory = {
-               .memory_size = memory  < dosmem ? memory : dosmem,
-               .guest_phys_addr = 0,
-       };
-       struct kvm_memory_region extended_memory = {
-               .memory_size = memory < exmem ? 0 : memory - exmem,
-               .guest_phys_addr = exmem,
-       };
-       struct kvm_memory_region above_4g_memory = {
-               .memory_size = memory < pcimem ? 0 : memory - pcimem,
-               .guest_phys_addr = 0x100000000ULL,
-       };
-
-#ifdef KVM_CAP_SET_TSS_ADDR
-       tss_ext = ioctl(kvm->fd, KVM_CHECK_EXTENSION, KVM_CAP_SET_TSS_ADDR);
-#else
-       tss_ext = 0;
-#endif
-
-       if (memory >= pcimem)
-               extended_memory.memory_size = pcimem - exmem;
-
-       /* 640K should be enough. */
-       low_memory.slot = get_free_slot(kvm);
-       r = ioctl(kvm->vm_fd, KVM_SET_MEMORY_REGION, &low_memory);
-       if (r == -1) {
-               fprintf(stderr, "kvm_create_memory_region: %m\n");
-               return -1;
-       }
-       register_slot(low_memory.slot, low_memory.guest_phys_addr);
-
-       if (extended_memory.memory_size) {
-               if (tss_ext > 0)
-                       extended_memory.slot = get_free_slot(kvm);
-               else
-                       extended_memory.slot = 0;
-               r = ioctl(kvm->vm_fd, KVM_SET_MEMORY_REGION, &extended_memory);
-               if (r == -1) {
-                       fprintf(stderr, "kvm_create_memory_region: %m\n");
-                       return -1;
-               }
-               register_slot(extended_memory.slot,
-                             extended_memory.guest_phys_addr);
-       }
-
-       if (above_4g_memory.memory_size) {
-               above_4g_memory.slot = get_free_slot(kvm);
-               r = ioctl(kvm->vm_fd, KVM_SET_MEMORY_REGION, &above_4g_memory);
-               if (r == -1) {
-                       fprintf(stderr, "kvm_create_memory_region: %m\n");
-                       return -1;
-               }
-               register_slot(above_4g_memory.slot,
-                             above_4g_memory.guest_phys_addr);
-       }
-
-       kvm_memory_region_save_params(kvm, &low_memory);
-       kvm_memory_region_save_params(kvm, &extended_memory);
-       if (above_4g_memory.memory_size)
-               kvm_memory_region_save_params(kvm, &above_4g_memory);
-
-       *vm_mem = mmap(NULL, memory, PROT_READ|PROT_WRITE, MAP_SHARED, 
kvm->vm_fd, 0);
-
-       return 0;
-}
-
-#ifdef KVM_CAP_USER_MEMORY
 
 int kvm_alloc_userspace_memory(kvm_context_t kvm, unsigned long memory,
                                                                void **vm_mem)

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to