[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v1 05/13] util/mmap-alloc: Factor out calculation of pagesize to
From: |
David Hildenbrand |
Subject: |
[PATCH v1 05/13] util/mmap-alloc: Factor out calculation of pagesize to mmap_pagesize() |
Date: |
Mon, 3 Feb 2020 19:31:17 +0100 |
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>
---
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);
}
}
--
2.24.1
- [PATCH v1 00/13] Ram blocks with resizable anonymous allocations under POSIX, David Hildenbrand, 2020/02/03
- [PATCH v1 02/13] exec: Factor out setting ram settings (madvise ...) into qemu_ram_apply_settings(), David Hildenbrand, 2020/02/03
- [PATCH v1 01/13] util: vfio-helpers: Factor out and fix processing of existings ram blocks, David Hildenbrand, 2020/02/03
- [PATCH v1 03/13] exec: Reuse qemu_ram_apply_settings() in qemu_ram_remap(), David Hildenbrand, 2020/02/03
- [PATCH v1 04/13] exec: Drop "shared" parameter from ram_block_add(), David Hildenbrand, 2020/02/03
- [PATCH v1 05/13] util/mmap-alloc: Factor out calculation of pagesize to mmap_pagesize(),
David Hildenbrand <=
- [PATCH v1 07/13] util/mmap-alloc: Factor out populating of memory to mmap_populate(), David Hildenbrand, 2020/02/03
- [PATCH v1 10/13] numa: Introduce ram_block_notify_resized() and ram_block_notifiers_support_resize(), David Hildenbrand, 2020/02/03
- [PATCH v1 09/13] util/mmap-alloc: Implement resizable mmaps, David Hildenbrand, 2020/02/03