summary refs log tree commit diff stats
path: root/include
diff options
context:
space:
mode:
authorPhilippe Mathieu-Daudé <philmd@linaro.org>2025-01-16 17:33:13 +0100
committerPhilippe Mathieu-Daudé <philmd@linaro.org>2025-03-09 14:54:32 +0100
commit1405d7e60d8c98a28b29885f70da4f2e4407fbc6 (patch)
treed3c6195b307466b0dd7ee4d0125a3b6513712b86 /include
parent84d66261bef3cdfea3bd1fb052a7ba38abb34b18 (diff)
downloadfocaccia-qemu-1405d7e60d8c98a28b29885f70da4f2e4407fbc6.tar.gz
focaccia-qemu-1405d7e60d8c98a28b29885f70da4f2e4407fbc6.zip
user: Extract common MMAP API to 'user/mmap.h'
Keep common MMAP-related declarations in a single place.

Note, this disable ThreadSafetyAnalysis on Linux for:
- mmap_fork_start()
- mmap_fork_end().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20250308122842.76377-4-philmd@linaro.org>
Diffstat (limited to 'include')
-rw-r--r--include/user/mmap.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/include/user/mmap.h b/include/user/mmap.h
new file mode 100644
index 0000000000..4d5e9aac70
--- /dev/null
+++ b/include/user/mmap.h
@@ -0,0 +1,32 @@
+/*
+ * MMAP declarations for QEMU user emulation
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+#ifndef USER_MMAP_H
+#define USER_MMAP_H
+
+#include "user/abitypes.h"
+
+/*
+ * mmap_next_start: The base address for the next mmap without hint,
+ * increased after each successful map, starting at task_unmapped_base.
+ * This is an optimization within QEMU and not part of ADDR_COMPAT_LAYOUT.
+ */
+extern abi_ulong mmap_next_start;
+
+int target_mprotect(abi_ulong start, abi_ulong len, int prot);
+
+abi_long target_mmap(abi_ulong start, abi_ulong len, int prot,
+                     int flags, int fd, off_t offset);
+int target_munmap(abi_ulong start, abi_ulong len);
+abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size,
+                       abi_ulong new_size, unsigned long flags,
+                       abi_ulong new_addr);
+
+abi_ulong mmap_find_vma(abi_ulong start, abi_ulong size, abi_ulong alignment);
+
+void TSA_NO_TSA mmap_fork_start(void);
+void TSA_NO_TSA mmap_fork_end(int child);
+
+#endif