[newlib-cygwin] Cygwin: winlean.h: remove most of the extended memory API

Ken Brown kbrown@sourceware.org
Thu Sep 24 16:35:40 GMT 2020


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=c1f7c4d1b6d7424d7081fd382ac83a631b7671ff

commit c1f7c4d1b6d7424d7081fd382ac83a631b7671ff
Author: Ken Brown <kbrown@cornell.edu>
Date:   Wed Sep 23 11:04:08 2020 -0400

    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
    <w32api/memoryapi.h>, 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.

Diff:
---
 winsup/cygwin/ntdll.h   |  6 ++++++
 winsup/cygwin/winlean.h | 52 +++++++++++--------------------------------------
 winsup/utils/cygpath.cc |  1 -
 winsup/utils/ps.cc      |  1 -
 4 files changed, 17 insertions(+), 43 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. */
-
-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);
+/* For the extended memory API. */
+#if __MINGW64_VERSION_MAJOR < 8
+#error "Version >= 8 of the w32api headers is required"
+#endif
+
+/* VirtualAlloc2 is declared in <w32api/memoryapi.h> 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 <windows.h>
 #include <userenv.h>
 #include <shlobj.h>
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 <errno.h>
 #include <stdio.h>
 #include <locale.h>


More information about the Cygwin-cvs mailing list