Add MAP_SYNC from Linux 4.15
Commit Message
[Proposed for once the release changes for 2.27, and the post-release
changes opening master for development for 2.28, have been committed.]
This patch adds the MAP_SYNC macro from Linux 4.15 to various
bits/mman.h headers. Note that this is *not* added to all
architectures: in Linux 4.15, this macro is only in
asm-generic/mman.h, and only some architectures' asm/mman.h include
the asm-generic file - the architectures not using the asm-generic
file will need their own values of MAP_SYNC allocated to support this
functionality (some of them also already have conflicting mmap flags
so the value there will have to be different from the generic
0x80000). Specifically, for glibc architectures, alpha hppa mips
powerpc sparc tile lack allocations of values for MAP_SYNC.
Tested for x86_64.
2018-02-01 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/aarch64/bits/mman.h [__USE_MISC]
(MAP_SYNC): New macro.
* sysdeps/unix/sysv/linux/arm/bits/mman.h [__USE_MISC] (MAP_SYNC):
Likewise.
* sysdeps/unix/sysv/linux/ia64/bits/mman.h [__USE_MISC]
(MAP_SYNC): Likewise.
* sysdeps/unix/sysv/linux/m68k/bits/mman.h [__USE_MISC]
(MAP_SYNC): Likewise.
* sysdeps/unix/sysv/linux/microblaze/bits/mman.h [__USE_MISC]
(MAP_SYNC): Likewise.
* sysdeps/unix/sysv/linux/nios2/bits/mman.h [__USE_MISC]
(MAP_SYNC): Likewise.
* sysdeps/unix/sysv/linux/riscv/bits/mman.h [__USE_MISC]
(MAP_SYNC): Likewise.
* sysdeps/unix/sysv/linux/s390/bits/mman.h [__USE_MISC]
(MAP_SYNC): Likewise.
* sysdeps/unix/sysv/linux/sh/bits/mman.h [__USE_MISC] (MAP_SYNC):
Likewise.
* sysdeps/unix/sysv/linux/x86/bits/mman.h [__USE_MISC] (MAP_SYNC):
Likewise.
Comments
On Thu, Feb 01, 2018 at 06:15:28PM +0000, Joseph Myers wrote:
> [Proposed for once the release changes for 2.27, and the post-release
> changes opening master for development for 2.28, have been committed.]
>
> This patch adds the MAP_SYNC macro from Linux 4.15 to various
> bits/mman.h headers. Note that this is *not* added to all
> architectures: in Linux 4.15, this macro is only in
> asm-generic/mman.h, and only some architectures' asm/mman.h include
> the asm-generic file - the architectures not using the asm-generic
> file will need their own values of MAP_SYNC allocated to support this
> functionality (some of them also already have conflicting mmap flags
> so the value there will have to be different from the generic
> 0x80000). Specifically, for glibc architectures, alpha hppa mips
> powerpc sparc tile lack allocations of values for MAP_SYNC.
>
> Tested for x86_64.
I've double-checked that this change matches Linux 4.15 headers,
so it should be OK to commit as is, but ...
> 2018-02-01 Joseph Myers <joseph@codesourcery.com>
>
> * sysdeps/unix/sysv/linux/aarch64/bits/mman.h [__USE_MISC]
> (MAP_SYNC): New macro.
> * sysdeps/unix/sysv/linux/arm/bits/mman.h [__USE_MISC] (MAP_SYNC):
> Likewise.
> * sysdeps/unix/sysv/linux/ia64/bits/mman.h [__USE_MISC]
> (MAP_SYNC): Likewise.
> * sysdeps/unix/sysv/linux/m68k/bits/mman.h [__USE_MISC]
> (MAP_SYNC): Likewise.
> * sysdeps/unix/sysv/linux/microblaze/bits/mman.h [__USE_MISC]
> (MAP_SYNC): Likewise.
> * sysdeps/unix/sysv/linux/nios2/bits/mman.h [__USE_MISC]
> (MAP_SYNC): Likewise.
> * sysdeps/unix/sysv/linux/riscv/bits/mman.h [__USE_MISC]
> (MAP_SYNC): Likewise.
> * sysdeps/unix/sysv/linux/s390/bits/mman.h [__USE_MISC]
> (MAP_SYNC): Likewise.
> * sysdeps/unix/sysv/linux/sh/bits/mman.h [__USE_MISC] (MAP_SYNC):
> Likewise.
> * sysdeps/unix/sysv/linux/x86/bits/mman.h [__USE_MISC] (MAP_SYNC):
> Likewise.
... why don't we have a file with common bits similar to asm-generic/mman.h?
On Tue, 6 Feb 2018, Dmitry V. Levin wrote:
> ... why don't we have a file with common bits similar to asm-generic/mman.h?
We do. It's bits/mman-linux.h (and bits/mman-shared.h). It only has
things that are common to all non-hppa architectures, not things common to
smaller subsets.
@@ -36,6 +36,8 @@
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
# define MAP_STACK 0x20000 /* Allocation is for a stack. */
# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
+# define MAP_SYNC 0x80000 /* Perform synchronous page
+ faults for the mapping. */
#endif
@@ -34,6 +34,8 @@
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
# define MAP_STACK 0x20000 /* Allocation is for a stack. */
# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
+# define MAP_SYNC 0x80000 /* Perform synchronous page
+ faults for the mapping. */
#endif
/* Include generic Linux declarations. */
@@ -35,6 +35,8 @@
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
# define MAP_STACK 0x20000 /* Allocation is for a stack. */
# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
+# define MAP_SYNC 0x80000 /* Perform synchronous page
+ faults for the mapping. */
#endif
/* Include generic Linux declarations. */
@@ -34,6 +34,8 @@
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
# define MAP_STACK 0x20000 /* Allocation is for a stack. */
# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
+# define MAP_SYNC 0x80000 /* Perform synchronous page
+ faults for the mapping. */
#endif
/* Include generic Linux declarations. */
@@ -36,6 +36,8 @@
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
# define MAP_STACK 0x20000 /* Allocation is for a stack. */
# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
+# define MAP_SYNC 0x80000 /* Perform synchronous page
+ faults for the mapping. */
#endif
/* Include generic Linux declarations. */
@@ -36,6 +36,8 @@
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
# define MAP_STACK 0x20000 /* Allocation is for a stack. */
# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
+# define MAP_SYNC 0x80000 /* Perform synchronous page
+ faults for the mapping. */
#endif
/* Include generic Linux declarations. */
@@ -30,6 +30,8 @@
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
# define MAP_STACK 0x20000 /* Allocation is for a stack. */
# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
+# define MAP_SYNC 0x80000 /* Perform synchronous page
+ faults for the mapping. */
#endif
/* Include generic Linux declarations. */
@@ -35,6 +35,8 @@
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
# define MAP_STACK 0x20000 /* Allocation is for a stack. */
# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
+# define MAP_SYNC 0x80000 /* Perform synchronous page
+ faults for the mapping. */
#endif
/* Include generic Linux declarations. */
@@ -34,6 +34,8 @@
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
# define MAP_STACK 0x20000 /* Allocation is for a stack. */
# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
+# define MAP_SYNC 0x80000 /* Perform synchronous page
+ faults for the mapping. */
#endif
/* Include generic Linux declarations. */
@@ -39,6 +39,8 @@
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
# define MAP_STACK 0x20000 /* Allocation is for a stack. */
# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
+# define MAP_SYNC 0x80000 /* Perform synchronous page
+ faults for the mapping. */
#endif
/* Include generic Linux declarations. */