This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Use bits/mman-linux.h for hppa
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>
>