[PATCH] libc: replace include/api/aarch64/bits/mman.h with a symlink to musl copy

16 views
Skip to first unread message

Waldemar Kozaczuk

unread,
Aug 29, 2020, 12:29:13 AM8/29/20
to osv...@googlegroups.com, Waldemar Kozaczuk
This file and its aarch64 equivalent differs only to musl copies by
extra MAP_UNINITIALIZED macro. In order to drop this header
we create extra __mman.h headers and use them in libc/mman.cc.

Signed-off-by: Waldemar Kozaczuk <jwkoz...@gmail.com>
---
include/api/aarch64/bits/__mman.h | 13 +++++++
include/api/aarch64/bits/mman.h | 1 -
include/api/x64/bits/__mman.h | 13 +++++++
include/api/x64/bits/mman.h | 64 +------------------------------
libc/mman.cc | 1 +
5 files changed, 28 insertions(+), 64 deletions(-)
create mode 100644 include/api/aarch64/bits/__mman.h
create mode 100644 include/api/x64/bits/__mman.h
mode change 100644 => 120000 include/api/x64/bits/mman.h

diff --git a/include/api/aarch64/bits/__mman.h b/include/api/aarch64/bits/__mman.h
new file mode 100644
index 00000000..53743e3d
--- /dev/null
+++ b/include/api/aarch64/bits/__mman.h
@@ -0,0 +1,13 @@
+/*
+ * Copyright (C) 2020 Waldemar Kozaczuk
+ *
+ * This work is open source software, licensed under the terms of the
+ * BSD license as described in the LICENSE file in the top-level directory.
+ */
+
+#ifndef OSV__BITS_MMAN_H_
+#define OSV__BITS_MMAN_H_
+
+#define MAP_UNINITIALIZED 0x4000000
+
+#endif /* OSV__BITS_MMAN_H_ */
diff --git a/include/api/aarch64/bits/mman.h b/include/api/aarch64/bits/mman.h
index dc07c611..dcab47a4 100644
--- a/include/api/aarch64/bits/mman.h
+++ b/include/api/aarch64/bits/mman.h
@@ -25,7 +25,6 @@
#define MAP_NONBLOCK 0x10000
#define MAP_STACK 0x20000
#define MAP_HUGETLB 0x40000
-#define MAP_UNINITIALIZED 0x4000000

#define POSIX_MADV_NORMAL 0
#define POSIX_MADV_RANDOM 1
diff --git a/include/api/x64/bits/__mman.h b/include/api/x64/bits/__mman.h
new file mode 100644
index 00000000..53743e3d
--- /dev/null
+++ b/include/api/x64/bits/__mman.h
@@ -0,0 +1,13 @@
+/*
+ * Copyright (C) 2020 Waldemar Kozaczuk
+ *
+ * This work is open source software, licensed under the terms of the
+ * BSD license as described in the LICENSE file in the top-level directory.
+ */
+
+#ifndef OSV__BITS_MMAN_H_
+#define OSV__BITS_MMAN_H_
+
+#define MAP_UNINITIALIZED 0x4000000
+
+#endif /* OSV__BITS_MMAN_H_ */
diff --git a/include/api/x64/bits/mman.h b/include/api/x64/bits/mman.h
deleted file mode 100644
index dc07c611..00000000
--- a/include/api/x64/bits/mman.h
+++ /dev/null
@@ -1,63 +0,0 @@
-#define MAP_FAILED ((void *) -1)
-
-#define PROT_NONE 0
-#define PROT_READ 1
-#define PROT_WRITE 2
-#define PROT_EXEC 4
-#define PROT_GROWSDOWN 0x01000000
-#define PROT_GROWSUP 0x02000000
-
-#define MAP_SHARED 0x01
-#define MAP_PRIVATE 0x02
-#define MAP_FIXED 0x10
-
-#define MAP_TYPE 0x0f
-#define MAP_FILE 0x00
-#define MAP_ANON 0x20
-#define MAP_ANONYMOUS MAP_ANON
-#define MAP_32BIT 0x40
-#define MAP_NORESERVE 0x4000
-#define MAP_GROWSDOWN 0x0100
-#define MAP_DENYWRITE 0x0800
-#define MAP_EXECUTABLE 0x1000
-#define MAP_LOCKED 0x2000
-#define MAP_POPULATE 0x8000
-#define MAP_NONBLOCK 0x10000
-#define MAP_STACK 0x20000
-#define MAP_HUGETLB 0x40000
-#define MAP_UNINITIALIZED 0x4000000
-
-#define POSIX_MADV_NORMAL 0
-#define POSIX_MADV_RANDOM 1
-#define POSIX_MADV_SEQUENTIAL 2
-#define POSIX_MADV_WILLNEED 3
-#define POSIX_MADV_DONTNEED 0
-
-#define MS_ASYNC 1
-#define MS_INVALIDATE 2
-#define MS_SYNC 4
-
-#define MCL_CURRENT 1
-#define MCL_FUTURE 2
-
-#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#define MADV_NORMAL 0
-#define MADV_RANDOM 1
-#define MADV_SEQUENTIAL 2
-#define MADV_WILLNEED 3
-#define MADV_DONTNEED 4
-#define MADV_REMOVE 9
-#define MADV_DONTFORK 10
-#define MADV_DOFORK 11
-#define MADV_MERGEABLE 12
-#define MADV_UNMERGEABLE 13
-#define MADV_HUGEPAGE 14
-#define MADV_NOHUGEPAGE 15
-#define MADV_DONTDUMP 16
-#define MADV_DODUMP 17
-#define MADV_HWPOISON 100
-#define MADV_SOFT_OFFLINE 101
-
-#define MREMAP_MAYMOVE 1
-#define MREMAP_FIXED 2
-#endif
diff --git a/include/api/x64/bits/mman.h b/include/api/x64/bits/mman.h
new file mode 120000
index 00000000..80a5261f
--- /dev/null
+++ b/include/api/x64/bits/mman.h
@@ -0,0 +1 @@
+../../../../musl/arch/x86_64/bits/mman.h
\ No newline at end of file
diff --git a/libc/mman.cc b/libc/mman.cc
index d0803ac4..f0b8bc11 100644
--- a/libc/mman.cc
+++ b/libc/mman.cc
@@ -15,6 +15,7 @@
#include "osv/mount.h"
#include "libc/libc.hh"
#include <safe-ptr.hh>
+#include <bits/__mman.h>

TRACEPOINT(trace_memory_mmap, "addr=%p, length=%d, prot=%d, flags=%d, fd=%d, offset=%d", void *, size_t, int, int, int, off_t);
TRACEPOINT(trace_memory_mmap_err, "%d", int);
--
2.26.2

Nadav Har'El

unread,
Aug 30, 2020, 11:04:44 AM8/30/20
to Waldemar Kozaczuk, Osv Dev
On Sat, Aug 29, 2020 at 7:29 AM Waldemar Kozaczuk <jwkoz...@gmail.com> wrote:
This file and its aarch64 equivalent differs only to musl copies by
extra MAP_UNINITIALIZED macro. In order to drop this header
we create extra __mman.h headers and use them in libc/mman.cc.

I'm afraid that nobody will remember what's the point of this extra "__mman.h".

I have a different proposal, I wonder what you think of it.

In libc/mman.cc, the only place in our code that uses MAP_UNINITIALIZED, we could add the following lines:

// MAP_UNINITIALIZED is available in Linux's header files, but not defined in Musl's header file
#ifndef MAP_UNINITIALIZED
#define MAP_UNINITIALIZED 0x4000000
#endif

If one day, Musl does add MAP_UNINITIALIZED, we won't need to change anything.
 
--
You received this message because you are subscribed to the Google Groups "OSv Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to osv-dev+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/20200829042859.573695-1-jwkozaczuk%40gmail.com.

Commit Bot

unread,
Sep 7, 2020, 2:07:15 AM9/7/20
to osv...@googlegroups.com, Waldemar Kozaczuk
From: Waldemar Kozaczuk <jwkoz...@gmail.com>
Committer: Waldemar Kozaczuk <jwkoz...@gmail.com>
Branch: master

libc: replace include/api/aarch64/bits/mman.h with a symlink to musl copy

This file and its aarch64 equivalent differs only to musl copies by
extra MAP_UNINITIALIZED macro. In order to drop this header
we define MAP_UNINITIALIZED in libc/mman.cc.

Signed-off-by: Waldemar Kozaczuk <jwkoz...@gmail.com>

---
diff --git a/include/api/x64/bits/mman.h b/include/api/x64/bits/mman.h
--- a/include/api/x64/bits/mman.h
+++ b/include/api/x64/bits/mman.h
--- a/include/api/x64/bits/mman.h
+++ b/include/api/x64/bits/mman.h
@@ -0,0 +1 @@
+../../../../musl/arch/x86_64/bits/mman.h
\ No newline at end of file
diff --git a/libc/mman.cc b/libc/mman.cc
--- a/libc/mman.cc
+++ b/libc/mman.cc
@@ -16,6 +16,10 @@
#include "libc/libc.hh"
#include <safe-ptr.hh>

+#ifndef MAP_UNINITIALIZED
+#define MAP_UNINITIALIZED 0x4000000
+#endif
+
TRACEPOINT(trace_memory_mmap, "addr=%p, length=%d, prot=%d, flags=%d, fd=%d, offset=%d", void *, size_t, int, int, int, off_t);
TRACEPOINT(trace_memory_mmap_err, "%d", int);
TRACEPOINT(trace_memory_mmap_ret, "%p", void *);
Reply all
Reply to author
Forward
0 new messages