This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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>
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]