]> git.proxmox.com Git - qemu.git/blobdiff - memory.c
virtio: add a queue_index to VirtQueue
[qemu.git] / memory.c
index d44200335bae8d75af33fa3f5e9cecc14304e35a..410c5f80b420f79c00910a462a6691d0dc62683a 100644 (file)
--- a/memory.c
+++ b/memory.c
@@ -17,7 +17,7 @@
 #include "exec/address-spaces.h"
 #include "exec/ioport.h"
 #include "qemu/bitops.h"
-#include "kvm.h"
+#include "sysemu/kvm.h"
 #include <assert.h>
 
 #include "exec/memory-internal.h"
@@ -1081,6 +1081,22 @@ void memory_region_set_dirty(MemoryRegion *mr, hwaddr addr,
     return cpu_physical_memory_set_dirty_range(mr->ram_addr + addr, size, -1);
 }
 
+bool memory_region_test_and_clear_dirty(MemoryRegion *mr, hwaddr addr,
+                                        hwaddr size, unsigned client)
+{
+    bool ret;
+    assert(mr->terminates);
+    ret = cpu_physical_memory_get_dirty(mr->ram_addr + addr, size,
+                                        1 << client);
+    if (ret) {
+        cpu_physical_memory_reset_dirty(mr->ram_addr + addr,
+                                        mr->ram_addr + addr + size,
+                                        1 << client);
+    }
+    return ret;
+}
+
+
 void memory_region_sync_dirty_bitmap(MemoryRegion *mr)
 {
     AddressSpace *as;