Message ID | alpine.DEB.2.21.1810041653040.27752@digraph.polyomino.org.uk |
---|---|
State | New |
Headers | show |
Series | Use bits/mman-linux.h for hppa | expand |
On 04/10/2018 13:53, Joseph Myers wrote: > hppa currently has a bits/mman.h that does not include > bits/mman-linux.h, unlike all other architectures using the Linux > kernel. This sort of variation between architectures is generally > unhelpful when making global changes for new constants added to new > Linux kernel releases. > > This patch changes hppa to use bits/mman-linux.h, overriding constants > with different values as necessary (including with #undef after > bits/mman.h inclusion when needed, as already done for alpha). While > there could possibly be further improvements through e.g. splitting > more sets of definitions into separate bits/ headers, I think this is > still an improvement on the current state. diffstat shows 27 lines > added, 51 deleted (and some of that is actually existing lines moving > to a different place in the file). > > Tested with build-many-glibcs.py for hppa-linux-gnu. > > 2018-10-04 Joseph Myers <joseph@codesourcery.com> > > * sysdeps/unix/sysv/linux/hppa/bits/mman.h: Include > <bits/mman-linux.h>. > (PROT_READ): Don't define here. > (PROT_WRITE): Likewise. > (PROT_EXEC): Likewise. > (PROT_NONE): Likewise. > (PROT_GROWSDOWN): Likewise. > (PROT_GROWSUP): Likewise. > (MAP_SHARED): Likewise. > (MAP_PRIVATE): Likewise. > [__USE_MISC] (MAP_SHARED_VALIDATE): Likewise. > [__USE_MISC] (MAP_FILE): Likewise. > [__USE_MISC] (MAP_ANONYMOUS): Likewise. > [__USE_MISC] (MAP_ANON): Likewise. > [__USE_MISC] (MAP_HUGE_SHIFT): Likewise. > [__USE_MISC] (MAP_HUGE_MASK): Likewise. > (MCL_CURRENT): Likewise. > (MCL_FUTURE): Likewise. > (MCL_ONFAULT): Likewise. > [__USE_MISC] (MADV_NORMAL): Likewise. > [__USE_MISC] (MADV_RANDOM): Likewise. > [__USE_MISC] (MADV_SEQUENTIAL): Likewise. > [__USE_MISC] (MADV_WILLNEED): Likewise. > [__USE_MISC] (MADV_DONTNEED): Likewise. > [__USE_MISC] (MADV_FREE): Likewise. > [__USE_MISC] (MADV_REMOVE): Likewise. > [__USE_MISC] (MADV_DONTFORK): Likewise. > [__USE_MISC] (MADV_DOFORK): Likewise. > [__USE_MISC] (MADV_HWPOISON): Likewise. > [__USE_XOPEN2K] (POSIX_MADV_NORMAL): Likewise. > [__USE_XOPEN2K] (POSIX_MADV_RANDOM): Likewise. > [__USE_XOPEN2K] (POSIX_MADV_SEQUENTIAL): Likewise. > [__USE_XOPEN2K] (POSIX_MADV_WILLNEED): Likewise. > [__USE_XOPEN2K] (POSIX_MADV_DONTNEED): Likewise. > (__MAP_ANONYMOUS): New macro. > [__USE_MISC] (MAP_TYPE): Undefine and redefine after > <bits/mman-linux.h> inclusion. > (MAP_FIXED): Likewise. > (MS_SYNC): Likewise. > (MS_ASYNC): Likewise. > (MS_INVALIDATE): Likewise. > [__USE_MISC] (MADV_MERGEABLE): Likewise. > [__USE_MISC] (MADV_UNMERGEABLE): Likewise. > [__USE_MISC] (MADV_HUGEPAGE): Likewise. > [__USE_MISC] (MADV_NOHUGEPAGE): Likewise. > [__USE_MISC] (MADV_DONTDUMP): Likewise. > [__USE_MISC] (MADV_DODUMP): Likewise. > [__USE_MISC] (MADV_WIPEONFORK): Likewise. > [__USE_MISC] (MADV_KEEPONFORK): Likewise. LGTM, thanks. > > diff --git a/sysdeps/unix/sysv/linux/hppa/bits/mman.h b/sysdeps/unix/sysv/linux/hppa/bits/mman.h > index fd07a65868..deecac0504 100644 > --- a/sysdeps/unix/sysv/linux/hppa/bits/mman.h > +++ b/sysdeps/unix/sysv/linux/hppa/bits/mman.h > @@ -22,33 +22,10 @@ > > /* These are taken from the kernel definitions. */ > > -#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_NONE 0x0 /* Page can not be accessed */ > -#define PROT_GROWSDOWN 0x01000000 /* Extend change to start of > - growsdown vma (mprotect only). */ > -#define PROT_GROWSUP 0x02000000 /* Extend change to start of > - growsup vma (mprotect only). */ > - > -#define MAP_SHARED 0x01 /* Share changes */ > -#define MAP_PRIVATE 0x02 /* Changes are private */ > -#ifdef __USE_MISC > -# define MAP_SHARED_VALIDATE 0x03 /* Share changes and validate > - extension flags. */ > -# define MAP_TYPE 0x2b /* Mask for type of mapping */ > -#endif > - > /* Other flags. */ > -#define MAP_FIXED 0x04 /* Interpret addr exactly */ > +#define __MAP_ANONYMOUS 0x10 /* Don't use a file */ > #ifdef __USE_MISC > -# define MAP_FILE 0x0 > -# define MAP_ANONYMOUS 0x10 /* Don't use a file */ > -# define MAP_ANON MAP_ANONYMOUS > # define MAP_VARIABLE 0 > -/* When MAP_HUGETLB is set bits [26:31] encode the log2 of the huge page size. */ > -# define MAP_HUGE_SHIFT 26 > -# define MAP_HUGE_MASK 0x3f > #endif > > /* These are Linux-specific. */ > @@ -66,47 +43,46 @@ > underlying mapping. */ > #endif > > +/* Advice to "madvise" */ > +#ifdef __USE_MISC > +# define MADV_SOFT_OFFLINE 101 /* Soft offline page for testing. */ > +#endif > + > +#include <bits/mman-linux.h> > + > +#ifdef __USE_MISC > +# undef MAP_TYPE > +# define MAP_TYPE 0x2b /* Mask for type of mapping */ > +#endif > + > +#undef MAP_FIXED > +#define MAP_FIXED 0x04 /* Interpret addr exactly */ > + > /* Flags to "msync" */ > +#undef MS_SYNC > #define MS_SYNC 1 /* Synchronous memory sync */ > +#undef MS_ASYNC > #define MS_ASYNC 2 /* Sync memory asynchronously */ > +#undef MS_INVALIDATE > #define MS_INVALIDATE 4 /* Invalidate the caches */ > > -/* Flags to "mlockall" */ > -#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 */ > - > /* Advice to "madvise" */ > #ifdef __USE_MISC > -# 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 /* Dont need these pages */ > -# define MADV_FREE 8 /* Free pages only if memory pressure. */ > -# define MADV_REMOVE 9 /* Remove these pages and resources. */ > -# define MADV_DONTFORK 10 /* Do not inherit across fork. */ > -# define MADV_DOFORK 11 /* Do inherit across fork. */ > +# undef MADV_MERGEABLE > # define MADV_MERGEABLE 65 /* KSM may merge identical pages */ > +# undef MADV_UNMERGEABLE > # define MADV_UNMERGEABLE 66 /* KSM may not merge identical pages */ > +# undef MADV_HUGEPAGE > # define MADV_HUGEPAGE 67 /* Worth backing with hugepages */ > +# undef MADV_NOHUGEPAGE > # define MADV_NOHUGEPAGE 68 /* Not worth backing with hugepages */ > +# undef MADV_DONTDUMP > # define MADV_DONTDUMP 69 /* Explicity exclude from the core dump, > overrides the coredump filter bits */ > +# undef MADV_DODUMP > # define MADV_DODUMP 70 /* Clear the MADV_NODUMP flag */ > +# undef MADV_WIPEONFORK > # define MADV_WIPEONFORK 71 /* Zero memory on fork, child only. */ > +# undef MADV_KEEPONFORK > # define MADV_KEEPONFORK 72 /* Undo MADV_WIPEONFORK. */ > -# define MADV_HWPOISON 100 /* Poison a page for testing. */ > -# define MADV_SOFT_OFFLINE 101 /* Soft offline page for testing. */ > #endif > - > -/* The POSIX people had to invent similar names for the same things. */ > -#ifdef __USE_XOPEN2K > -# define POSIX_MADV_NORMAL 0 /* No further special treatment. */ > -# define POSIX_MADV_RANDOM 1 /* Expect random page references. */ > -# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */ > -# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */ > -# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */ > -#endif > - > -#include <bits/mman-shared.h> >
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/mman.h b/sysdeps/unix/sysv/linux/hppa/bits/mman.h index fd07a65868..deecac0504 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/mman.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/mman.h @@ -22,33 +22,10 @@ /* These are taken from the kernel definitions. */ -#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_NONE 0x0 /* Page can not be accessed */ -#define PROT_GROWSDOWN 0x01000000 /* Extend change to start of - growsdown vma (mprotect only). */ -#define PROT_GROWSUP 0x02000000 /* Extend change to start of - growsup vma (mprotect only). */ - -#define MAP_SHARED 0x01 /* Share changes */ -#define MAP_PRIVATE 0x02 /* Changes are private */ -#ifdef __USE_MISC -# define MAP_SHARED_VALIDATE 0x03 /* Share changes and validate - extension flags. */ -# define MAP_TYPE 0x2b /* Mask for type of mapping */ -#endif - /* Other flags. */ -#define MAP_FIXED 0x04 /* Interpret addr exactly */ +#define __MAP_ANONYMOUS 0x10 /* Don't use a file */ #ifdef __USE_MISC -# define MAP_FILE 0x0 -# define MAP_ANONYMOUS 0x10 /* Don't use a file */ -# define MAP_ANON MAP_ANONYMOUS # define MAP_VARIABLE 0 -/* When MAP_HUGETLB is set bits [26:31] encode the log2 of the huge page size. */ -# define MAP_HUGE_SHIFT 26 -# define MAP_HUGE_MASK 0x3f #endif /* These are Linux-specific. */ @@ -66,47 +43,46 @@ underlying mapping. */ #endif +/* Advice to "madvise" */ +#ifdef __USE_MISC +# define MADV_SOFT_OFFLINE 101 /* Soft offline page for testing. */ +#endif + +#include <bits/mman-linux.h> + +#ifdef __USE_MISC +# undef MAP_TYPE +# define MAP_TYPE 0x2b /* Mask for type of mapping */ +#endif + +#undef MAP_FIXED +#define MAP_FIXED 0x04 /* Interpret addr exactly */ + /* Flags to "msync" */ +#undef MS_SYNC #define MS_SYNC 1 /* Synchronous memory sync */ +#undef MS_ASYNC #define MS_ASYNC 2 /* Sync memory asynchronously */ +#undef MS_INVALIDATE #define MS_INVALIDATE 4 /* Invalidate the caches */ -/* Flags to "mlockall" */ -#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 */ - /* Advice to "madvise" */ #ifdef __USE_MISC -# 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 /* Dont need these pages */ -# define MADV_FREE 8 /* Free pages only if memory pressure. */ -# define MADV_REMOVE 9 /* Remove these pages and resources. */ -# define MADV_DONTFORK 10 /* Do not inherit across fork. */ -# define MADV_DOFORK 11 /* Do inherit across fork. */ +# undef MADV_MERGEABLE # define MADV_MERGEABLE 65 /* KSM may merge identical pages */ +# undef MADV_UNMERGEABLE # define MADV_UNMERGEABLE 66 /* KSM may not merge identical pages */ +# undef MADV_HUGEPAGE # define MADV_HUGEPAGE 67 /* Worth backing with hugepages */ +# undef MADV_NOHUGEPAGE # define MADV_NOHUGEPAGE 68 /* Not worth backing with hugepages */ +# undef MADV_DONTDUMP # define MADV_DONTDUMP 69 /* Explicity exclude from the core dump, overrides the coredump filter bits */ +# undef MADV_DODUMP # define MADV_DODUMP 70 /* Clear the MADV_NODUMP flag */ +# undef MADV_WIPEONFORK # define MADV_WIPEONFORK 71 /* Zero memory on fork, child only. */ +# undef MADV_KEEPONFORK # define MADV_KEEPONFORK 72 /* Undo MADV_WIPEONFORK. */ -# define MADV_HWPOISON 100 /* Poison a page for testing. */ -# define MADV_SOFT_OFFLINE 101 /* Soft offline page for testing. */ #endif - -/* The POSIX people had to invent similar names for the same things. */ -#ifdef __USE_XOPEN2K -# define POSIX_MADV_NORMAL 0 /* No further special treatment. */ -# define POSIX_MADV_RANDOM 1 /* Expect random page references. */ -# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */ -# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */ -# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */ -#endif - -#include <bits/mman-shared.h>