]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
xen: Implement memory map hypercalls
authorBart Van Assche <bvanassche@acm.org>
Sun, 28 Jun 2015 16:47:13 +0000 (16:47 +0000)
committerBart Van Assche <bvanassche@acm.org>
Sun, 28 Jun 2015 16:47:13 +0000 (16:47 +0000)
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15380

coregrind/m_syswrap/syswrap-xen.c

index 645b001111b1eed255eb0670535d734f7bcd5ee6..f46bb4c5ea0b2b2217256e1abdf5f836d8dd7120 100644 (file)
@@ -144,6 +144,16 @@ PRE(memory_op)
                    (Addr)&arg->map, sizeof(arg->map));
       break;
    }
+
+   case VKI_XENMEM_memory_map:
+   case VKI_XENMEM_machine_memory_map: {
+      struct vki_xen_memory_map *arg =
+             (struct vki_xen_memory_map *)ARG2;
+      PRE_MEM_READ("XENMEM_memory_map nr_entries",
+                   (Addr)&arg->nr_entries, sizeof(arg->nr_entries));
+      break;
+   }
+
    case VKI_XENMEM_increase_reservation:
    case VKI_XENMEM_decrease_reservation:
    case VKI_XENMEM_populate_physmap:
@@ -1218,6 +1228,16 @@ POST(memory_op)
        break;
    }
 
+   case VKI_XENMEM_memory_map:
+   case VKI_XENMEM_machine_memory_map: {
+      struct vki_xen_memory_map *arg =
+         (struct vki_xen_memory_map *)ARG2;
+      POST_MEM_WRITE(arg->nr_entries, sizeof(arg->nr_entries));
+      POST_MEM_WRITE((Addr)arg->buffer.p,
+                     arg->nr_entries * 20 /* size of an e820 entry */);
+      break;
+   }
+
    case VKI_XENMEM_add_to_physmap: {
        struct vki_xen_add_to_physmap *arg =
            (struct vki_xen_add_to_physmap *)ARG2;