tools include: Add uapi mman.h for each architecture
authorWang Nan <wangnan0@huawei.com>
Mon, 12 Sep 2016 12:54:29 +0000 (12:54 +0000)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 13 Sep 2016 18:26:08 +0000 (15:26 -0300)
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

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 <wangnan0@huawei.com>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1473684871-209320-2-git-send-email-wangnan0@huawei.com
[ Added new files to tools/perf/MANIFEST to fix the detached tarball build, add mman.h for ARC ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
25 files changed:
tools/arch/alpha/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/arc/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/arm/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/arm64/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/frv/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/h8300/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/hexagon/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/ia64/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/m32r/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/microblaze/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/mips/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/mn10300/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/parisc/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/powerpc/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/s390/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/score/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/sh/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/sparc/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/tile/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/x86/include/uapi/asm/mman.h [new file with mode: 0644]
tools/arch/xtensa/include/uapi/asm/mman.h [new file with mode: 0644]
tools/include/uapi/asm-generic/mman-common.h [new file with mode: 0644]
tools/include/uapi/asm-generic/mman.h [new file with mode: 0644]
tools/include/uapi/linux/mman.h [new file with mode: 0644]
tools/perf/MANIFEST

diff --git a/tools/arch/alpha/include/uapi/asm/mman.h b/tools/arch/alpha/include/uapi/asm/mman.h
new file mode 100644 (file)
index 0000000..6ed4ad4
--- /dev/null
@@ -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/arc/include/uapi/asm/mman.h b/tools/arch/arc/include/uapi/asm/mman.h
new file mode 100644 (file)
index 0000000..f76765d
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef TOOLS_ARCH_ARC_UAPI_ASM_MMAN_FIX_H
+#define TOOLS_ARCH_ARC_UAPI_ASM_MMAN_FIX_H
+#include <uapi/asm-generic/mman.h>
+#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 (file)
index 0000000..f200638
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef TOOLS_ARCH_ARM_UAPI_ASM_MMAN_FIX_H
+#define TOOLS_ARCH_ARM_UAPI_ASM_MMAN_FIX_H
+#include <uapi/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 (file)
index 0000000..a7dd975
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef TOOLS_ARCH_ARM64_UAPI_ASM_MMAN_FIX_H
+#define TOOLS_ARCH_ARM64_UAPI_ASM_MMAN_FIX_H
+#include <uapi/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 (file)
index 0000000..99bba05
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef TOOLS_ARCH_FRV_UAPI_ASM_MMAN_FIX_H
+#define TOOLS_ARCH_FRV_UAPI_ASM_MMAN_FIX_H
+#include <uapi/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 (file)
index 0000000..df95096
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef TOOLS_ARCH_H8300_UAPI_ASM_MMAN_FIX_H
+#define TOOLS_ARCH_H8300_UAPI_ASM_MMAN_FIX_H
+#include <uapi/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 (file)
index 0000000..f1adcce
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef TOOLS_ARCH_HEXAGON_UAPI_ASM_MMAN_FIX_H
+#define TOOLS_ARCH_HEXAGON_UAPI_ASM_MMAN_FIX_H
+#include <uapi/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 (file)
index 0000000..23420eb
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef TOOLS_ARCH_IA64_UAPI_ASM_MMAN_FIX_H
+#define TOOLS_ARCH_IA64_UAPI_ASM_MMAN_FIX_H
+#include <uapi/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 (file)
index 0000000..a35ebd6
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef TOOLS_ARCH_M32R_UAPI_ASM_MMAN_FIX_H
+#define TOOLS_ARCH_M32R_UAPI_ASM_MMAN_FIX_H
+#include <uapi/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 (file)
index 0000000..75f460a
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef TOOLS_ARCH_MICROBLAZE_UAPI_ASM_MMAN_FIX_H
+#define TOOLS_ARCH_MICROBLAZE_UAPI_ASM_MMAN_FIX_H
+#include <uapi/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 (file)
index 0000000..db88fa4
--- /dev/null
@@ -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 (file)
index 0000000..81faa5d
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef TOOLS_ARCH_MN10300_UAPI_ASM_MMAN_FIX_H
+#define TOOLS_ARCH_MN10300_UAPI_ASM_MMAN_FIX_H
+#include <uapi/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 (file)
index 0000000..c4a9d9f
--- /dev/null
@@ -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 (file)
index 0000000..7a56ab9
--- /dev/null
@@ -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 <uapi/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 (file)
index 0000000..fe53b91
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef TOOLS_ARCH_S390_UAPI_ASM_MMAN_FIX_H
+#define TOOLS_ARCH_S390_UAPI_ASM_MMAN_FIX_H
+#include <uapi/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 (file)
index 0000000..ba1ee9c
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef TOOLS_ARCH_SCORE_UAPI_ASM_MMAN_FIX_H
+#define TOOLS_ARCH_SCORE_UAPI_ASM_MMAN_FIX_H
+#include <uapi/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 (file)
index 0000000..5a47d8c
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef TOOLS_ARCH_SH_UAPI_ASM_MMAN_FIX_H
+#define TOOLS_ARCH_SH_UAPI_ASM_MMAN_FIX_H
+#include <uapi/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 (file)
index 0000000..b88f3ac
--- /dev/null
@@ -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 <uapi/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 (file)
index 0000000..b0a054f
--- /dev/null
@@ -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 <uapi/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 (file)
index 0000000..b73c1af
--- /dev/null
@@ -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 <uapi/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 (file)
index 0000000..1c89538
--- /dev/null
@@ -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 (file)
index 0000000..5827438
--- /dev/null
@@ -0,0 +1,75 @@
+#ifndef __ASM_GENERIC_MMAN_COMMON_H
+#define __ASM_GENERIC_MMAN_COMMON_H
+
+/*
+ Author: Michael S. Tsirkin <mst@mellanox.co.il>, 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 (file)
index 0000000..10fa785
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef __ASM_GENERIC_MMAN_H
+#define __ASM_GENERIC_MMAN_H
+
+#include <uapi/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 (file)
index 0000000..81d8edf
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef _UAPI_LINUX_MMAN_H
+#define _UAPI_LINUX_MMAN_H
+
+#include <uapi/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 */
index ff200c6..0bda2cc 100644 (file)
@@ -66,9 +66,12 @@ tools/include/linux/hash.h
 tools/include/linux/kernel.h
 tools/include/linux/list.h
 tools/include/linux/log2.h
+tools/include/uapi/asm-generic/mman-common.h
+tools/include/uapi/asm-generic/mman.h
 tools/include/uapi/linux/bpf.h
 tools/include/uapi/linux/bpf_common.h
 tools/include/uapi/linux/hw_breakpoint.h
+tools/include/uapi/linux/mman.h
 tools/include/uapi/linux/perf_event.h
 tools/include/linux/poison.h
 tools/include/linux/rbtree.h
@@ -79,4 +82,5 @@ tools/include/linux/types.h
 tools/include/linux/err.h
 tools/include/linux/bitmap.h
 tools/include/linux/time64.h
+tools/arch/*/include/uapi/asm/mman.h
 tools/arch/*/include/uapi/asm/perf_regs.h