From 09a471ecb125e20f8ec9257c05dc050f3538e555 Mon Sep 17 00:00:00 2001 From: Ken Brown Date: Wed, 23 Sep 2020 11:04:08 -0400 Subject: [PATCH] Cygwin: winlean.h: remove most of the extended memory API This was added as a temporary measure in commit e18f7f99 because it wasn't yet in the mingw-w64 headers. With one exception, it is now in the current release of the headers (version 8.0.0), so we don't need it in winlean.h. The exception is that VirtualAlloc2 is declared conditionally in , but the compilation of Cygwin requires it to always be declared, even though it will only be executed on systems that support it. So retain the declaration in winlean.h. And add "WINAPI" to the declaration, as in memoryapi.h. Add a check that version >= 8 of the mingw-w64 headers is intalled. Also revert commit 3d136011, which was a related temporary workaround. --- winsup/cygwin/ntdll.h | 6 +++++ winsup/cygwin/winlean.h | 50 +++++++++-------------------------------- winsup/utils/cygpath.cc | 1 - winsup/utils/ps.cc | 1 - 4 files changed, 16 insertions(+), 42 deletions(-) diff --git a/winsup/cygwin/ntdll.h b/winsup/cygwin/ntdll.h index 0c6ad13dc..554e04665 100644 --- a/winsup/cygwin/ntdll.h +++ b/winsup/cygwin/ntdll.h @@ -1423,6 +1423,12 @@ extern "C" NTSTATUS NTAPI NtMapViewOfSection (HANDLE, HANDLE, PVOID *, ULONG_PTR, SIZE_T, PLARGE_INTEGER, PSIZE_T, SECTION_INHERIT, ULONG, ULONG); + +/* For the extended memory API. */ +#if __MINGW64_VERSION_MAJOR < 8 +#error "Version >= 8 of the w32api headers is required" +#endif + NTSTATUS NTAPI NtMapViewOfSectionEx (HANDLE, HANDLE, PVOID *, PLARGE_INTEGER, PSIZE_T, ULONG, ULONG, PMEM_EXTENDED_PARAMETER, ULONG); diff --git a/winsup/cygwin/winlean.h b/winsup/cygwin/winlean.h index 2ee4aaff4..2e2308eb6 100644 --- a/winsup/cygwin/winlean.h +++ b/winsup/cygwin/winlean.h @@ -99,47 +99,17 @@ details. */ extern "C" { #endif -/* Define extended memory API here as long as not available from mingw-w64. */ +/* For the extended memory API. */ +#if __MINGW64_VERSION_MAJOR < 8 +#error "Version >= 8 of the w32api headers is required" +#endif -typedef struct _MEM_ADDRESS_REQUIREMENTS -{ - PVOID LowestStartingAddress; - PVOID HighestEndingAddress; - SIZE_T Alignment; -} MEM_ADDRESS_REQUIREMENTS, *PMEM_ADDRESS_REQUIREMENTS; - -typedef enum MEM_EXTENDED_PARAMETER_TYPE -{ - MemExtendedParameterInvalidType = 0, - MemExtendedParameterAddressRequirements, - MemExtendedParameterNumaNode, - MemExtendedParameterPartitionHandle, - MemExtendedParameterUserPhysicalHandle, - MemExtendedParameterAttributeFlags, - MemExtendedParameterMax -} MEM_EXTENDED_PARAMETER_TYPE, *PMEM_EXTENDED_PARAMETER_TYPE; - -#define MEM_EXTENDED_PARAMETER_TYPE_BITS 8 - -typedef struct DECLSPEC_ALIGN(8) MEM_EXTENDED_PARAMETER -{ - struct - { - DWORD64 Type : MEM_EXTENDED_PARAMETER_TYPE_BITS; - DWORD64 Reserved : 64 - MEM_EXTENDED_PARAMETER_TYPE_BITS; - }; - union - { - DWORD64 ULong64; - PVOID Pointer; - SIZE_T Size; - HANDLE Handle; - DWORD ULong; - }; -} MEM_EXTENDED_PARAMETER, *PMEM_EXTENDED_PARAMETER; - -PVOID VirtualAlloc2 (HANDLE, PVOID, SIZE_T, ULONG, ULONG, - PMEM_EXTENDED_PARAMETER, ULONG); +/* VirtualAlloc2 is declared in if NTDDI_VERSION + >= NTDDI_WIN10_RS4 (a compile-time condition). But we need the + declaration unconditionally, even though the function will only be + executed on systems that support it (a run-time condition). */ +PVOID WINAPI VirtualAlloc2 (HANDLE, PVOID, SIZE_T, ULONG, ULONG, + PMEM_EXTENDED_PARAMETER, ULONG); #ifdef __cplusplus } diff --git a/winsup/utils/cygpath.cc b/winsup/utils/cygpath.cc index aa9df3a21..bc5f11dd0 100644 --- a/winsup/utils/cygpath.cc +++ b/winsup/utils/cygpath.cc @@ -24,7 +24,6 @@ details. */ #define _WIN32_WINNT 0x0a00 #define WINVER 0x0a00 #define NOCOMATTRIBUTE -#define PMEM_EXTENDED_PARAMETER PVOID #include #include #include diff --git a/winsup/utils/ps.cc b/winsup/utils/ps.cc index f3eb9e847..478ed8efd 100644 --- a/winsup/utils/ps.cc +++ b/winsup/utils/ps.cc @@ -6,7 +6,6 @@ This software is a copyrighted work licensed under the terms of the Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ -#define PMEM_EXTENDED_PARAMETER PVOID #include #include #include