qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH v1 05/13] util/mmap-alloc: Factor out calculation of pagesize


From: Murilo Opsfelder Araújo
Subject: Re: [PATCH v1 05/13] util/mmap-alloc: Factor out calculation of pagesize to mmap_pagesize()
Date: Wed, 5 Feb 2020 16:37:13 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1

Hello, David.

On 2/3/20 3:31 PM, David Hildenbrand wrote:
Factor it out and add a comment.

Cc: "Michael S. Tsirkin" <address@hidden>
Cc: Murilo Opsfelder Araujo <address@hidden>
Cc: Greg Kurz <address@hidden>
Cc: Eduardo Habkost <address@hidden>
Cc: "Dr. David Alan Gilbert" <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>

Acked-by: Murilo Opsfelder Araujo <address@hidden>

---
  util/mmap-alloc.c | 21 ++++++++++++---------
  1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/util/mmap-alloc.c b/util/mmap-alloc.c
index 27dcccd8ec..82f02a2cec 100644
--- a/util/mmap-alloc.c
+++ b/util/mmap-alloc.c
@@ -82,17 +82,27 @@ size_t qemu_mempath_getpagesize(const char *mem_path)
      return qemu_real_host_page_size;
  }
+static inline size_t mmap_pagesize(int fd)
+{
+#if defined(__powerpc64__) && defined(__linux__)
+    /* Mappings in the same segment must share the same page size */
+    return qemu_fd_getpagesize(fd);
+#else
+    return qemu_real_host_page_size;
+#endif
+}
+
  void *qemu_ram_mmap(int fd,
                      size_t size,
                      size_t align,
                      bool shared,
                      bool is_pmem)
  {
+    const size_t pagesize = mmap_pagesize(fd);
      int flags;
      int map_sync_flags = 0;
      int guardfd;
      size_t offset;
-    size_t pagesize;
      size_t total;
      void *guardptr;
      void *ptr;
@@ -113,7 +123,6 @@ void *qemu_ram_mmap(int fd,
       * anonymous memory is OK.
       */
      flags = MAP_PRIVATE;
-    pagesize = qemu_fd_getpagesize(fd);
      if (fd == -1 || pagesize == qemu_real_host_page_size) {
          guardfd = -1;
          flags |= MAP_ANONYMOUS;
@@ -123,7 +132,6 @@ void *qemu_ram_mmap(int fd,
      }
  #else
      guardfd = -1;
-    pagesize = qemu_real_host_page_size;
      flags = MAP_PRIVATE | MAP_ANONYMOUS;
  #endif
@@ -198,15 +206,10 @@ void *qemu_ram_mmap(int fd, void qemu_ram_munmap(int fd, void *ptr, size_t size)
  {
-    size_t pagesize;
+    const size_t pagesize = mmap_pagesize(fd);
if (ptr) {
          /* Unmap both the RAM block and the guard page */
-#if defined(__powerpc64__) && defined(__linux__)
-        pagesize = qemu_fd_getpagesize(fd);
-#else
-        pagesize = qemu_real_host_page_size;
-#endif
          munmap(ptr, size + pagesize);
      }
  }


--
Murilo



reply via email to

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