Em Mon, Sep 12, 2016 at 12:54:29PM +0000, Wang Nan escreveu:
> Some mmap related macros have different values for different
> architectures. This patch introduces uapi mman.h for each
> architectures.
> 
> Three headers are cloned from kernel include to tools/include:
> 
>  tools/include/uapi/asm-generic/mman-common.h
>  tools/include/uapi/asm-generic/mman.h
>  tools/include/uapi/linux/mman.h

Cool, the above was done as copies, why not the rest? IIRC you mentioned
some reasoning behind that decision, but we need it spelled out here.

For instance, I went on and look at arch/xtensa/include/uapi/asm/mman.h,
and couldn't find why we shouldn't copy it just like the three files
above.

I'm looking now at why the build breaks in so many systems, first hunch
is that bits/ part (the ones without the failure details probably have
the same errors), alpine uses musl libc, but some that broke are glibc
based.

[root@jouet ~]# time dm
 1 17.973758230 alpine:3.4: FAIL
  CC       /tmp/build/perf/ui/gtk/helpline.o
util/evlist.c: In function 'perf_mmap__mmap':
util/evlist.c:1010:19: error: 'MAP_FAILED' undeclared (first use in this 
function)
  if (map->base == MAP_FAILED) {
                   ^
  CC       /tmp/build/perf/tests/mmap-thread-lookup.o
tests/mmap-thread-lookup.c: In function 'thread_init':
tests/mmap-thread-lookup.c:36:13: error: 'MAP_FAILED' undeclared (first use in 
this function)
  if (map == MAP_FAILED) {
             ^
 2 23.829330164 android-ndk:r12b-arm: Ok
 3 35.751916863 archlinux:latest: FAIL
  CC       /tmp/build/perf/bench/numa.o
bench/numa.c: In function 'alloc_data':
bench/numa.c:337:53: error: 'MAP_ANON' undeclared (first use in this function)
  buf = (void *)mmap(0, bytes, PROT_READ|PROT_WRITE, MAP_ANON|map_flags, -1, 0);
                                                     ^~~~~~~~
 4 38.572208679 centos:5: Ok
 5 26.714708734 centos:6: FAIL
  CC       /tmp/build/perf/bench/numa.o
bench/numa.c: In function 'alloc_data':
bench/numa.c:337: error: 'MAP_ANON' undeclared (first use in this function)
 6 32.837248143 centos:7: FAIL
bench/numa.c:337:53: error: 'MAP_ANON' undeclared (first use in this function)
  buf = (void *)mmap(0, bytes, PROT_READ|PROT_WRITE, MAP_ANON|map_flags, -1, 0);
                                                     ^
 7 63.308075869 debian:7: Ok
 8 33.929417619 debian:8: FAIL
  CC       /tmp/build/perf/bench/numa.o
bench/numa.c: In function 'alloc_data':
bench/numa.c:337:53: error: 'MAP_ANON' undeclared (first use in this function)
  buf = (void *)mmap(0, bytes, PROT_READ|PROT_WRITE, MAP_ANON|map_flags, -1, 0);
                                                     ^

 9 32.952231740 debian:experimental: FAIL
10 31.829857966 fedora:20: FAIL
  CC       /tmp/build/perf/bench/numa.o
bench/numa.c: In function 'alloc_data':
bench/numa.c:337:53: error: 'MAP_ANON' undeclared (first use in this function)
  buf = (void *)mmap(0, bytes, PROT_READ|PROT_WRITE, MAP_ANON|map_flags, -1, 0);
                                                     ^
11 34.036926800 fedora:21: FAIL
12 36.631930655 fedora:22: FAIL
13 36.143394407 fedora:23: FAIL
14 38.141220936 fedora:24: FAIL
15 29.933559651 fedora:24-x-ARC-uClibc: Ok
16 35.423161135 fedora:rawhide: FAIL
  CC       /tmp/build/perf/bench/numa.o
bench/numa.c: In function 'alloc_data':
bench/numa.c:337:53: error: 'MAP_ANON' undeclared (first use in this function)
  buf = (void *)mmap(0, bytes, PROT_READ|PROT_WRITE, MAP_ANON|map_flags, -1, 0);
                                                     ^~~~~~~~
17 39.673341183 mageia:5: FAIL
18 35.997827388 opensuse:13.2: FAIL
19 36.782868824 opensuse:42.1: FAIL
20 35.862577706 opensuse:tumbleweed: FAIL
21 56.936622721 ubuntu:12.04.5: Ok
22 32.634934252 ubuntu:14.04: FAIL
23 32.591958645 ubuntu:14.04.4: FAIL
24 33.994194481 ubuntu:15.10: FAIL
25 32.225119114 ubuntu:16.04: FAIL
26 52.260138011 ubuntu:16.04-x-arm: Ok
27 51.721441301 ubuntu:16.04-x-arm64: Ok
28 52.471039288 ubuntu:16.04-x-powerpc64: Ok
29 53.852692344 ubuntu:16.04-x-powerpc64el: Ok
30 40.392441174 ubuntu:16.10: FAIL
31 61.863598268 ubuntu:16.10-x-s390: Ok


 
> The main part of this patch is generated by following script:
> 
>  macros=`cat $0 | awk 'V==1 {print}; /^# start macro list/ {V=1}'`
>  for arch in `ls tools/arch`
>  do
>    [ -d tools/arch/$arch/include/uapi/asm ] || mkdir -p 
> tools/arch/$arch/include/uapi/asm
>    src=arch/$arch/include/uapi/asm/mman.h
>    target=tools/arch/$arch/include/uapi/asm/mman.h
>    guard="TOOLS_ARCH_"`echo $arch | awk '{print 
> toupper($0)}'`_UAPI_ASM_MMAN_FIX_H
>    echo '#ifndef '$guard > $target
>    echo '#define '$guard >> $target
> 
>    [ -f $src ] &&
>    for m in $macros
>    do
>      if grep '#define[ \t]*'$m $src > /dev/null 2>&1
>      then
>        grep -h '#define[ \t]*'$m $src | sed 's/[ \t]*\/\*.*$//g' >> $target
>      fi
>    done
> 
>    if [ -f $src ]
>    then
>       grep '#include <asm-generic' $src >> $target
>    else
>       echo "#include <asm-generic/mman.h>" >> $target
>    fi
>    echo '#endif' >> $target
>    echo "$target"
>  done
> 
>  exit 0
>  # Following macros are extracted from:
>  # tools/perf/trace/beauty/mmap.c
>  #
>  # start macro list
>  MADV_DODUMP
>  MADV_DOFORK
>  MADV_DONTDUMP
>  MADV_DONTFORK
>  MADV_DONTNEED
>  MADV_HUGEPAGE
>  MADV_HWPOISON
>  MADV_MERGEABLE
>  MADV_NOHUGEPAGE
>  MADV_NORMAL
>  MADV_RANDOM
>  MADV_REMOVE
>  MADV_SEQUENTIAL
>  MADV_SOFT_OFFLINE
>  MADV_UNMERGEABLE
>  MADV_WILLNEED
>  MAP_32BIT
>  MAP_ANONYMOUS
>  MAP_DENYWRITE
>  MAP_EXECUTABLE
>  MAP_FILE
>  MAP_FIXED
>  MAP_GROWSDOWN
>  MAP_HUGETLB
>  MAP_LOCKED
>  MAP_NONBLOCK
>  MAP_NORESERVE
>  MAP_POPULATE
>  MAP_PRIVATE
>  MAP_SHARED
>  MAP_STACK
>  MAP_UNINITIALIZED
>  MREMAP_FIXED
>  MREMAP_MAYMOVE
>  PROT_EXEC
>  PROT_GROWSDOWN
>  PROT_GROWSUP
>  PROT_NONE
>  PROT_READ
>  PROT_SEM
>  PROT_WRITE
> 
> Signed-off-by: Wang Nan <[email protected]>
> Cc: Arnaldo Carvalho de Melo <[email protected]>
> ---
>  tools/arch/alpha/include/uapi/asm/mman.h      | 38 ++++++++++++++
>  tools/arch/arm/include/uapi/asm/mman.h        |  4 ++
>  tools/arch/arm64/include/uapi/asm/mman.h      |  4 ++
>  tools/arch/frv/include/uapi/asm/mman.h        |  4 ++
>  tools/arch/h8300/include/uapi/asm/mman.h      |  4 ++
>  tools/arch/hexagon/include/uapi/asm/mman.h    |  4 ++
>  tools/arch/ia64/include/uapi/asm/mman.h       |  4 ++
>  tools/arch/m32r/include/uapi/asm/mman.h       |  4 ++
>  tools/arch/microblaze/include/uapi/asm/mman.h |  4 ++
>  tools/arch/mips/include/uapi/asm/mman.h       | 39 ++++++++++++++
>  tools/arch/mn10300/include/uapi/asm/mman.h    |  4 ++
>  tools/arch/parisc/include/uapi/asm/mman.h     | 38 ++++++++++++++
>  tools/arch/powerpc/include/uapi/asm/mman.h    | 13 +++++
>  tools/arch/s390/include/uapi/asm/mman.h       |  4 ++
>  tools/arch/score/include/uapi/asm/mman.h      |  4 ++
>  tools/arch/sh/include/uapi/asm/mman.h         |  4 ++
>  tools/arch/sparc/include/uapi/asm/mman.h      | 13 +++++
>  tools/arch/tile/include/uapi/asm/mman.h       | 13 +++++
>  tools/arch/x86/include/uapi/asm/mman.h        |  5 ++
>  tools/arch/xtensa/include/uapi/asm/mman.h     | 38 ++++++++++++++
>  tools/include/uapi/asm-generic/mman-common.h  | 75 
> +++++++++++++++++++++++++++
>  tools/include/uapi/asm-generic/mman.h         | 22 ++++++++
>  tools/include/uapi/linux/mman.h               | 13 +++++
>  23 files changed, 355 insertions(+)
>  create mode 100644 tools/arch/alpha/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/arm/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/arm64/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/frv/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/h8300/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/hexagon/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/ia64/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/m32r/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/microblaze/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/mips/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/mn10300/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/parisc/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/powerpc/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/s390/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/score/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/sh/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/sparc/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/tile/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/x86/include/uapi/asm/mman.h
>  create mode 100644 tools/arch/xtensa/include/uapi/asm/mman.h
>  create mode 100644 tools/include/uapi/asm-generic/mman-common.h
>  create mode 100644 tools/include/uapi/asm-generic/mman.h
>  create mode 100644 tools/include/uapi/linux/mman.h
> 
> diff --git a/tools/arch/alpha/include/uapi/asm/mman.h 
> b/tools/arch/alpha/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..6ed4ad4
> --- /dev/null
> +++ b/tools/arch/alpha/include/uapi/asm/mman.h
> @@ -0,0 +1,38 @@
> +#ifndef TOOLS_ARCH_ALPHA_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_ALPHA_UAPI_ASM_MMAN_FIX_H
> +#define MADV_DODUMP  17
> +#define MADV_DOFORK  11
> +#define MADV_DONTDUMP   16
> +#define MADV_DONTFORK        10
> +#define MADV_DONTNEED        6
> +#define MADV_HUGEPAGE        14
> +#define MADV_MERGEABLE   12
> +#define MADV_NOHUGEPAGE      15
> +#define MADV_NORMAL  0
> +#define MADV_RANDOM  1
> +#define MADV_REMOVE  9
> +#define MADV_SEQUENTIAL      2
> +#define MADV_UNMERGEABLE 13
> +#define MADV_WILLNEED        3
> +#define MAP_ANONYMOUS        0x10
> +#define MAP_DENYWRITE        0x02000
> +#define MAP_EXECUTABLE       0x04000
> +#define MAP_FILE     0
> +#define MAP_FIXED    0x100
> +#define MAP_GROWSDOWN        0x01000
> +#define MAP_HUGETLB  0x100000
> +#define MAP_LOCKED   0x08000
> +#define MAP_NONBLOCK 0x40000
> +#define MAP_NORESERVE        0x10000
> +#define MAP_POPULATE 0x20000
> +#define MAP_PRIVATE  0x02
> +#define MAP_SHARED   0x01
> +#define MAP_STACK    0x80000
> +#define PROT_EXEC    0x4
> +#define PROT_GROWSDOWN       0x01000000
> +#define PROT_GROWSUP 0x02000000
> +#define PROT_NONE    0x0
> +#define PROT_READ    0x1
> +#define PROT_SEM     0x8
> +#define PROT_WRITE   0x2
> +#endif
> diff --git a/tools/arch/arm/include/uapi/asm/mman.h 
> b/tools/arch/arm/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..0e2562b
> --- /dev/null
> +++ b/tools/arch/arm/include/uapi/asm/mman.h
> @@ -0,0 +1,4 @@
> +#ifndef TOOLS_ARCH_ARM_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_ARM_UAPI_ASM_MMAN_FIX_H
> +#include <asm-generic/mman.h>
> +#endif
> diff --git a/tools/arch/arm64/include/uapi/asm/mman.h 
> b/tools/arch/arm64/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..be5d271
> --- /dev/null
> +++ b/tools/arch/arm64/include/uapi/asm/mman.h
> @@ -0,0 +1,4 @@
> +#ifndef TOOLS_ARCH_ARM64_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_ARM64_UAPI_ASM_MMAN_FIX_H
> +#include <asm-generic/mman.h>
> +#endif
> diff --git a/tools/arch/frv/include/uapi/asm/mman.h 
> b/tools/arch/frv/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..d25ec8c
> --- /dev/null
> +++ b/tools/arch/frv/include/uapi/asm/mman.h
> @@ -0,0 +1,4 @@
> +#ifndef TOOLS_ARCH_FRV_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_FRV_UAPI_ASM_MMAN_FIX_H
> +#include <asm-generic/mman.h>
> +#endif
> diff --git a/tools/arch/h8300/include/uapi/asm/mman.h 
> b/tools/arch/h8300/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..fc7bbad
> --- /dev/null
> +++ b/tools/arch/h8300/include/uapi/asm/mman.h
> @@ -0,0 +1,4 @@
> +#ifndef TOOLS_ARCH_H8300_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_H8300_UAPI_ASM_MMAN_FIX_H
> +#include <asm-generic/mman.h>
> +#endif
> diff --git a/tools/arch/hexagon/include/uapi/asm/mman.h 
> b/tools/arch/hexagon/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..2b29088
> --- /dev/null
> +++ b/tools/arch/hexagon/include/uapi/asm/mman.h
> @@ -0,0 +1,4 @@
> +#ifndef TOOLS_ARCH_HEXAGON_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_HEXAGON_UAPI_ASM_MMAN_FIX_H
> +#include <asm-generic/mman.h>
> +#endif
> diff --git a/tools/arch/ia64/include/uapi/asm/mman.h 
> b/tools/arch/ia64/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..0353e96
> --- /dev/null
> +++ b/tools/arch/ia64/include/uapi/asm/mman.h
> @@ -0,0 +1,4 @@
> +#ifndef TOOLS_ARCH_IA64_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_IA64_UAPI_ASM_MMAN_FIX_H
> +#include <asm-generic/mman.h>
> +#endif
> diff --git a/tools/arch/m32r/include/uapi/asm/mman.h 
> b/tools/arch/m32r/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..fc39337
> --- /dev/null
> +++ b/tools/arch/m32r/include/uapi/asm/mman.h
> @@ -0,0 +1,4 @@
> +#ifndef TOOLS_ARCH_M32R_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_M32R_UAPI_ASM_MMAN_FIX_H
> +#include <asm-generic/mman.h>
> +#endif
> diff --git a/tools/arch/microblaze/include/uapi/asm/mman.h 
> b/tools/arch/microblaze/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..0a0267d
> --- /dev/null
> +++ b/tools/arch/microblaze/include/uapi/asm/mman.h
> @@ -0,0 +1,4 @@
> +#ifndef TOOLS_ARCH_MICROBLAZE_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_MICROBLAZE_UAPI_ASM_MMAN_FIX_H
> +#include <asm-generic/mman.h>
> +#endif
> diff --git a/tools/arch/mips/include/uapi/asm/mman.h 
> b/tools/arch/mips/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..db88fa4
> --- /dev/null
> +++ b/tools/arch/mips/include/uapi/asm/mman.h
> @@ -0,0 +1,39 @@
> +#ifndef TOOLS_ARCH_MIPS_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_MIPS_UAPI_ASM_MMAN_FIX_H
> +#define MADV_DODUMP  17
> +#define MADV_DOFORK  11
> +#define MADV_DONTDUMP        16
> +#define MADV_DONTFORK        10
> +#define MADV_DONTNEED        4
> +#define MADV_HUGEPAGE        14
> +#define MADV_HWPOISON         100
> +#define MADV_MERGEABLE        12
> +#define MADV_NOHUGEPAGE 15
> +#define MADV_NORMAL  0
> +#define MADV_RANDOM  1
> +#define MADV_REMOVE  9
> +#define MADV_SEQUENTIAL 2
> +#define MADV_UNMERGEABLE 13
> +#define MADV_WILLNEED        3
> +#define MAP_ANONYMOUS        0x0800
> +#define MAP_DENYWRITE        0x2000
> +#define MAP_EXECUTABLE       0x4000
> +#define MAP_FILE     0
> +#define MAP_FIXED    0x010
> +#define MAP_GROWSDOWN        0x1000
> +#define MAP_HUGETLB  0x80000
> +#define MAP_LOCKED   0x8000
> +#define MAP_NONBLOCK 0x20000
> +#define MAP_NORESERVE        0x0400
> +#define MAP_POPULATE 0x10000
> +#define MAP_PRIVATE  0x002
> +#define MAP_SHARED   0x001
> +#define MAP_STACK    0x40000
> +#define PROT_EXEC    0x04
> +#define PROT_GROWSDOWN       0x01000000
> +#define PROT_GROWSUP 0x02000000
> +#define PROT_NONE    0x00
> +#define PROT_READ    0x01
> +#define PROT_SEM     0x10
> +#define PROT_WRITE   0x02
> +#endif
> diff --git a/tools/arch/mn10300/include/uapi/asm/mman.h 
> b/tools/arch/mn10300/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..dfa95a0
> --- /dev/null
> +++ b/tools/arch/mn10300/include/uapi/asm/mman.h
> @@ -0,0 +1,4 @@
> +#ifndef TOOLS_ARCH_MN10300_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_MN10300_UAPI_ASM_MMAN_FIX_H
> +#include <asm-generic/mman.h>
> +#endif
> diff --git a/tools/arch/parisc/include/uapi/asm/mman.h 
> b/tools/arch/parisc/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..c4a9d9f
> --- /dev/null
> +++ b/tools/arch/parisc/include/uapi/asm/mman.h
> @@ -0,0 +1,38 @@
> +#ifndef TOOLS_ARCH_PARISC_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_PARISC_UAPI_ASM_MMAN_FIX_H
> +#define MADV_DODUMP  70
> +#define MADV_DOFORK  11
> +#define MADV_DONTDUMP   69
> +#define MADV_DONTFORK        10
> +#define MADV_DONTNEED   4
> +#define MADV_HUGEPAGE        67
> +#define MADV_MERGEABLE   65
> +#define MADV_NOHUGEPAGE      68
> +#define MADV_NORMAL     0
> +#define MADV_RANDOM     1
> +#define MADV_REMOVE  9
> +#define MADV_SEQUENTIAL 2
> +#define MADV_UNMERGEABLE 66
> +#define MADV_WILLNEED   3
> +#define MAP_ANONYMOUS        0x10
> +#define MAP_DENYWRITE        0x0800
> +#define MAP_EXECUTABLE       0x1000
> +#define MAP_FILE     0
> +#define MAP_FIXED    0x04
> +#define MAP_GROWSDOWN        0x8000
> +#define MAP_HUGETLB  0x80000
> +#define MAP_LOCKED   0x2000
> +#define MAP_NONBLOCK 0x20000
> +#define MAP_NORESERVE        0x4000
> +#define MAP_POPULATE 0x10000
> +#define MAP_PRIVATE  0x02
> +#define MAP_SHARED   0x01
> +#define MAP_STACK    0x40000
> +#define PROT_EXEC    0x4
> +#define PROT_GROWSDOWN       0x01000000
> +#define PROT_GROWSUP 0x02000000
> +#define PROT_NONE    0x0
> +#define PROT_READ    0x1
> +#define PROT_SEM     0x8
> +#define PROT_WRITE   0x2
> +#endif
> diff --git a/tools/arch/powerpc/include/uapi/asm/mman.h 
> b/tools/arch/powerpc/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..5afb126
> --- /dev/null
> +++ b/tools/arch/powerpc/include/uapi/asm/mman.h
> @@ -0,0 +1,13 @@
> +#ifndef TOOLS_ARCH_POWERPC_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_POWERPC_UAPI_ASM_MMAN_FIX_H
> +#define MAP_DENYWRITE        0x0800
> +#define MAP_EXECUTABLE       0x1000
> +#define MAP_GROWSDOWN        0x0100
> +#define MAP_HUGETLB  0x40000
> +#define MAP_LOCKED   0x80
> +#define MAP_NONBLOCK 0x10000
> +#define MAP_NORESERVE   0x40
> +#define MAP_POPULATE 0x8000
> +#define MAP_STACK    0x20000
> +#include <asm-generic/mman-common.h>
> +#endif
> diff --git a/tools/arch/s390/include/uapi/asm/mman.h 
> b/tools/arch/s390/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..d4dc8a6
> --- /dev/null
> +++ b/tools/arch/s390/include/uapi/asm/mman.h
> @@ -0,0 +1,4 @@
> +#ifndef TOOLS_ARCH_S390_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_S390_UAPI_ASM_MMAN_FIX_H
> +#include <asm-generic/mman.h>
> +#endif
> diff --git a/tools/arch/score/include/uapi/asm/mman.h 
> b/tools/arch/score/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..f9b63b8
> --- /dev/null
> +++ b/tools/arch/score/include/uapi/asm/mman.h
> @@ -0,0 +1,4 @@
> +#ifndef TOOLS_ARCH_SCORE_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_SCORE_UAPI_ASM_MMAN_FIX_H
> +#include <asm-generic/mman.h>
> +#endif
> diff --git a/tools/arch/sh/include/uapi/asm/mman.h 
> b/tools/arch/sh/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..ea46f1b
> --- /dev/null
> +++ b/tools/arch/sh/include/uapi/asm/mman.h
> @@ -0,0 +1,4 @@
> +#ifndef TOOLS_ARCH_SH_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_SH_UAPI_ASM_MMAN_FIX_H
> +#include <asm-generic/mman.h>
> +#endif
> diff --git a/tools/arch/sparc/include/uapi/asm/mman.h 
> b/tools/arch/sparc/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..2374ec9
> --- /dev/null
> +++ b/tools/arch/sparc/include/uapi/asm/mman.h
> @@ -0,0 +1,13 @@
> +#ifndef TOOLS_ARCH_SPARC_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_SPARC_UAPI_ASM_MMAN_FIX_H
> +#define MAP_DENYWRITE        0x0800
> +#define MAP_EXECUTABLE       0x1000
> +#define MAP_GROWSDOWN        0x0200
> +#define MAP_HUGETLB  0x40000
> +#define MAP_LOCKED      0x100
> +#define MAP_NONBLOCK 0x10000
> +#define MAP_NORESERVE   0x40
> +#define MAP_POPULATE 0x8000
> +#define MAP_STACK    0x20000
> +#include <asm-generic/mman-common.h>
> +#endif
> diff --git a/tools/arch/tile/include/uapi/asm/mman.h 
> b/tools/arch/tile/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..6e64564
> --- /dev/null
> +++ b/tools/arch/tile/include/uapi/asm/mman.h
> @@ -0,0 +1,13 @@
> +#ifndef TOOLS_ARCH_TILE_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_TILE_UAPI_ASM_MMAN_FIX_H
> +#define MAP_DENYWRITE        0x0800
> +#define MAP_EXECUTABLE       0x1000
> +#define MAP_GROWSDOWN        0x0100
> +#define MAP_HUGETLB  0x4000
> +#define MAP_LOCKED   0x0200
> +#define MAP_NONBLOCK 0x0080
> +#define MAP_NORESERVE        0x0400
> +#define MAP_POPULATE 0x0040
> +#define MAP_STACK    MAP_GROWSDOWN
> +#include <asm-generic/mman-common.h>
> +#endif
> diff --git a/tools/arch/x86/include/uapi/asm/mman.h 
> b/tools/arch/x86/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..62176803
> --- /dev/null
> +++ b/tools/arch/x86/include/uapi/asm/mman.h
> @@ -0,0 +1,5 @@
> +#ifndef TOOLS_ARCH_X86_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_X86_UAPI_ASM_MMAN_FIX_H
> +#define MAP_32BIT    0x40
> +#include <asm-generic/mman.h>
> +#endif
> diff --git a/tools/arch/xtensa/include/uapi/asm/mman.h 
> b/tools/arch/xtensa/include/uapi/asm/mman.h
> new file mode 100644
> index 0000000..1c89538
> --- /dev/null
> +++ b/tools/arch/xtensa/include/uapi/asm/mman.h
> @@ -0,0 +1,38 @@
> +#ifndef TOOLS_ARCH_XTENSA_UAPI_ASM_MMAN_FIX_H
> +#define TOOLS_ARCH_XTENSA_UAPI_ASM_MMAN_FIX_H
> +#define MADV_DODUMP  17
> +#define MADV_DOFORK  11
> +#define MADV_DONTDUMP   16
> +#define MADV_DONTFORK        10
> +#define MADV_DONTNEED        4
> +#define MADV_HUGEPAGE        14
> +#define MADV_MERGEABLE   12
> +#define MADV_NOHUGEPAGE      15
> +#define MADV_NORMAL  0
> +#define MADV_RANDOM  1
> +#define MADV_REMOVE  9
> +#define MADV_SEQUENTIAL      2
> +#define MADV_UNMERGEABLE 13
> +#define MADV_WILLNEED        3
> +#define MAP_ANONYMOUS        0x0800
> +#define MAP_DENYWRITE        0x2000
> +#define MAP_EXECUTABLE       0x4000
> +#define MAP_FILE     0
> +#define MAP_FIXED    0x010
> +#define MAP_GROWSDOWN        0x1000
> +#define MAP_HUGETLB  0x80000
> +#define MAP_LOCKED   0x8000
> +#define MAP_NONBLOCK 0x20000
> +#define MAP_NORESERVE        0x0400
> +#define MAP_POPULATE 0x10000
> +#define MAP_PRIVATE  0x002
> +#define MAP_SHARED   0x001
> +#define MAP_STACK    0x40000
> +#define PROT_EXEC    0x4
> +#define PROT_GROWSDOWN       0x01000000
> +#define PROT_GROWSUP 0x02000000
> +#define PROT_NONE    0x0
> +#define PROT_READ    0x1
> +#define PROT_SEM     0x10
> +#define PROT_WRITE   0x2
> +#endif
> diff --git a/tools/include/uapi/asm-generic/mman-common.h 
> b/tools/include/uapi/asm-generic/mman-common.h
> new file mode 100644
> index 0000000..5827438
> --- /dev/null
> +++ b/tools/include/uapi/asm-generic/mman-common.h
> @@ -0,0 +1,75 @@
> +#ifndef __ASM_GENERIC_MMAN_COMMON_H
> +#define __ASM_GENERIC_MMAN_COMMON_H
> +
> +/*
> + Author: Michael S. Tsirkin <[email protected]>, Mellanox Technologies Ltd.
> + Based on: asm-xxx/mman.h
> +*/
> +
> +#define PROT_READ    0x1             /* page can be read */
> +#define PROT_WRITE   0x2             /* page can be written */
> +#define PROT_EXEC    0x4             /* page can be executed */
> +#define PROT_SEM     0x8             /* page may be used for atomic ops */
> +#define PROT_NONE    0x0             /* page can not be accessed */
> +#define PROT_GROWSDOWN       0x01000000      /* mprotect flag: extend change 
> to start of growsdown vma */
> +#define PROT_GROWSUP 0x02000000      /* mprotect flag: extend change to end 
> of growsup vma */
> +
> +#define MAP_SHARED   0x01            /* Share changes */
> +#define MAP_PRIVATE  0x02            /* Changes are private */
> +#define MAP_TYPE     0x0f            /* Mask for type of mapping */
> +#define MAP_FIXED    0x10            /* Interpret addr exactly */
> +#define MAP_ANONYMOUS        0x20            /* don't use a file */
> +#ifdef CONFIG_MMAP_ALLOW_UNINITIALIZED
> +# define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could be 
> uninitialized */
> +#else
> +# define MAP_UNINITIALIZED 0x0               /* Don't support this flag */
> +#endif
> +
> +/*
> + * Flags for mlock
> + */
> +#define MLOCK_ONFAULT        0x01            /* Lock pages in range after 
> they are faulted in, do not prefault */
> +
> +#define MS_ASYNC     1               /* sync memory asynchronously */
> +#define MS_INVALIDATE        2               /* invalidate the caches */
> +#define MS_SYNC              4               /* synchronous memory sync */
> +
> +#define MADV_NORMAL  0               /* no further special treatment */
> +#define MADV_RANDOM  1               /* expect random page references */
> +#define MADV_SEQUENTIAL      2               /* expect sequential page 
> references */
> +#define MADV_WILLNEED        3               /* will need these pages */
> +#define MADV_DONTNEED        4               /* don't need these pages */
> +
> +/* common parameters: try to keep these consistent across architectures */
> +#define MADV_FREE    8               /* free pages only if memory pressure */
> +#define MADV_REMOVE  9               /* remove these pages & resources */
> +#define MADV_DONTFORK        10              /* don't inherit across fork */
> +#define MADV_DOFORK  11              /* do inherit across fork */
> +#define MADV_HWPOISON        100             /* poison a page for testing */
> +#define MADV_SOFT_OFFLINE 101                /* soft offline page for 
> testing */
> +
> +#define MADV_MERGEABLE   12          /* KSM may merge identical pages */
> +#define MADV_UNMERGEABLE 13          /* KSM may not merge identical pages */
> +
> +#define MADV_HUGEPAGE        14              /* Worth backing with hugepages 
> */
> +#define MADV_NOHUGEPAGE      15              /* Not worth backing with 
> hugepages */
> +
> +#define MADV_DONTDUMP   16           /* Explicity exclude from the core dump,
> +                                        overrides the coredump filter bits */
> +#define MADV_DODUMP  17              /* Clear the MADV_DONTDUMP flag */
> +
> +/* compatibility flags */
> +#define MAP_FILE     0
> +
> +/*
> + * When MAP_HUGETLB is set bits [26:31] encode the log2 of the huge page 
> size.
> + * This gives us 6 bits, which is enough until someone invents 128 bit 
> address
> + * spaces.
> + *
> + * Assume these are all power of twos.
> + * When 0 use the default page size.
> + */
> +#define MAP_HUGE_SHIFT       26
> +#define MAP_HUGE_MASK        0x3f
> +
> +#endif /* __ASM_GENERIC_MMAN_COMMON_H */
> diff --git a/tools/include/uapi/asm-generic/mman.h 
> b/tools/include/uapi/asm-generic/mman.h
> new file mode 100644
> index 0000000..7162cd4
> --- /dev/null
> +++ b/tools/include/uapi/asm-generic/mman.h
> @@ -0,0 +1,22 @@
> +#ifndef __ASM_GENERIC_MMAN_H
> +#define __ASM_GENERIC_MMAN_H
> +
> +#include <asm-generic/mman-common.h>
> +
> +#define MAP_GROWSDOWN        0x0100          /* stack-like segment */
> +#define MAP_DENYWRITE        0x0800          /* ETXTBSY */
> +#define MAP_EXECUTABLE       0x1000          /* mark it as an executable */
> +#define MAP_LOCKED   0x2000          /* pages are locked */
> +#define MAP_NORESERVE        0x4000          /* don't check for reservations 
> */
> +#define MAP_POPULATE 0x8000          /* populate (prefault) pagetables */
> +#define MAP_NONBLOCK 0x10000         /* do not block on IO */
> +#define MAP_STACK    0x20000         /* give out an address that is best 
> suited for process/thread stacks */
> +#define MAP_HUGETLB  0x40000         /* create a huge page mapping */
> +
> +/* Bits [26:31] are reserved, see mman-common.h for MAP_HUGETLB usage */
> +
> +#define MCL_CURRENT  1               /* lock all current mappings */
> +#define MCL_FUTURE   2               /* lock all future mappings */
> +#define MCL_ONFAULT  4               /* lock all pages that are faulted in */
> +
> +#endif /* __ASM_GENERIC_MMAN_H */
> diff --git a/tools/include/uapi/linux/mman.h b/tools/include/uapi/linux/mman.h
> new file mode 100644
> index 0000000..ade4acd
> --- /dev/null
> +++ b/tools/include/uapi/linux/mman.h
> @@ -0,0 +1,13 @@
> +#ifndef _UAPI_LINUX_MMAN_H
> +#define _UAPI_LINUX_MMAN_H
> +
> +#include <asm/mman.h>
> +
> +#define MREMAP_MAYMOVE       1
> +#define MREMAP_FIXED 2
> +
> +#define OVERCOMMIT_GUESS             0
> +#define OVERCOMMIT_ALWAYS            1
> +#define OVERCOMMIT_NEVER             2
> +
> +#endif /* _UAPI_LINUX_MMAN_H */
> -- 
> 1.8.3.4

Reply via email to