qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 05/15] util: add a helper to mmap private anonymous


From: Peter Lieven
Subject: [Qemu-devel] [PATCH 05/15] util: add a helper to mmap private anonymous memory
Date: Tue, 28 Jun 2016 11:01:29 +0200

Signed-off-by: Peter Lieven <address@hidden>
---
 include/qemu/mmap-alloc.h |  6 ++++++
 util/mmap-alloc.c         | 17 +++++++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/include/qemu/mmap-alloc.h b/include/qemu/mmap-alloc.h
index 0899b2f..a457721 100644
--- a/include/qemu/mmap-alloc.h
+++ b/include/qemu/mmap-alloc.h
@@ -9,4 +9,10 @@ void *qemu_ram_mmap(int fd, size_t size, size_t align, bool 
shared);
 
 void qemu_ram_munmap(void *ptr, size_t size);
 
+/* qemu_anon_ram_mmap maps private anonymous memory using mmap and
+ * aborts if the allocation fails. its meant to act as an replacement
+ * for g_malloc0 and friends. */
+void *qemu_anon_ram_mmap(size_t size);
+void qemu_anon_ram_munmap(void *ptr, size_t size);
+
 #endif
diff --git a/util/mmap-alloc.c b/util/mmap-alloc.c
index 629d97a..c099858 100644
--- a/util/mmap-alloc.c
+++ b/util/mmap-alloc.c
@@ -107,3 +107,20 @@ void qemu_ram_munmap(void *ptr, size_t size)
         munmap(ptr, size + getpagesize());
     }
 }
+
+void *qemu_anon_ram_mmap(size_t size)
+{
+    void *ptr = mmap(NULL, size, PROT_READ | PROT_WRITE,
+                     MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+    if (ptr == MAP_FAILED) {
+        abort();
+    }
+    return ptr;
+}
+
+void qemu_anon_ram_munmap(void *ptr, size_t size)
+{
+    if (ptr) {
+        munmap(ptr, size);
+    }
+}
-- 
1.9.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]