On Sat, Aug 29, 2020 at 7:29 AM Waldemar Kozaczuk <[email protected]>
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.


>
> Signed-off-by: Waldemar Kozaczuk <[email protected]>
> ---
>  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
>
> --
> 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 [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/osv-dev/20200829042859.573695-1-jwkozaczuk%40gmail.com
> .
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/CANEVyjtNL_j6MGHsi5uymUx75YwV8Wh%3DkwABWb%3DHFws9-ESjFA%40mail.gmail.com.

Reply via email to