From patchwork Thu Oct 4 16:53:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joseph Myers X-Patchwork-Id: 29647 Received: (qmail 77497 invoked by alias); 4 Oct 2018 16:53:34 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 77486 invoked by uid 89); 4 Oct 2018 16:53:33 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.5 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=backing, 6647, Interpret, interpret X-HELO: relay1.mentorg.com Date: Thu, 4 Oct 2018 16:53:24 +0000 From: Joseph Myers To: Subject: Use bits/mman-linux.h for hppa Message-ID: User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 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 * sysdeps/unix/sysv/linux/hppa/bits/mman.h: Include . (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 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. 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 + +#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