Alexandre Julliard : ntdll: Get rid of the almost empty virtual.c.

Alexandre Julliard julliard at winehq.org
Mon Jul 5 16:24:19 CDT 2021


Module: wine
Branch: master
Commit: 5d9586a60b5585fdfac294be73b8fa06ceb9c21b
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=5d9586a60b5585fdfac294be73b8fa06ceb9c21b

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Jul  5 12:23:58 2021 +0200

ntdll: Get rid of the almost empty virtual.c.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/Makefile.in |   1 -
 dlls/ntdll/thread.c    |  71 ++++++++++++++++++++++++++++++++-
 dlls/ntdll/virtual.c   | 106 -------------------------------------------------
 3 files changed, 70 insertions(+), 108 deletions(-)

diff --git a/dlls/ntdll/Makefile.in b/dlls/ntdll/Makefile.in
index eb125c07722..da849d55b4d 100644
--- a/dlls/ntdll/Makefile.in
+++ b/dlls/ntdll/Makefile.in
@@ -62,7 +62,6 @@ C_SRCS = \
 	unix/thread.c \
 	unix/virtual.c \
 	version.c \
-	virtual.c \
 	wcstring.c
 
 RC_SRCS = version.rc
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index d0c2a89d4bb..37dc7c8ab37 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -32,8 +32,8 @@
 #include "ddk/wdm.h"
 #include "wine/exception.h"
 
+WINE_DEFAULT_DEBUG_CHANNEL(thread);
 WINE_DECLARE_DEBUG_CHANNEL(relay);
-WINE_DECLARE_DEBUG_CHANNEL(thread);
 WINE_DECLARE_DEBUG_CHANNEL(pid);
 WINE_DECLARE_DEBUG_CHANNEL(timestamp);
 
@@ -303,6 +303,75 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
 }
 
 
+/**********************************************************************
+ *           RtlCreateUserStack (NTDLL.@)
+ */
+NTSTATUS WINAPI RtlCreateUserStack( SIZE_T commit, SIZE_T reserve, ULONG zero_bits,
+                                    SIZE_T commit_align, SIZE_T reserve_align, INITIAL_TEB *stack )
+{
+    PROCESS_STACK_ALLOCATION_INFORMATION alloc;
+    NTSTATUS status;
+
+    TRACE("commit %#lx, reserve %#lx, zero_bits %u, commit_align %#lx, reserve_align %#lx, stack %p\n",
+            commit, reserve, zero_bits, commit_align, reserve_align, stack);
+
+    if (!commit_align || !reserve_align)
+        return STATUS_INVALID_PARAMETER;
+
+    if (!commit || !reserve)
+    {
+        IMAGE_NT_HEADERS *nt = RtlImageNtHeader( NtCurrentTeb()->Peb->ImageBaseAddress );
+        if (!reserve) reserve = nt->OptionalHeader.SizeOfStackReserve;
+        if (!commit) commit = nt->OptionalHeader.SizeOfStackCommit;
+    }
+
+    reserve = (reserve + reserve_align - 1) & ~(reserve_align - 1);
+    commit = (commit + commit_align - 1) & ~(commit_align - 1);
+
+    if (reserve < commit) reserve = commit;
+    if (reserve < 0x100000) reserve = 0x100000;
+    reserve = (reserve + 0xffff) & ~0xffff;  /* round to 64K boundary */
+
+    alloc.ReserveSize = reserve;
+    alloc.ZeroBits = zero_bits;
+    status = NtSetInformationProcess( GetCurrentProcess(), ProcessThreadStackAllocation,
+                                      &alloc, sizeof(alloc) );
+    if (!status)
+    {
+        void *addr = alloc.StackBase;
+        SIZE_T size = page_size;
+
+        NtAllocateVirtualMemory( GetCurrentProcess(), &addr, 0, &size, MEM_COMMIT, PAGE_NOACCESS );
+        addr = (char *)alloc.StackBase + page_size;
+        NtAllocateVirtualMemory( GetCurrentProcess(), &addr, 0, &size, MEM_COMMIT, PAGE_READWRITE | PAGE_GUARD );
+        addr = (char *)alloc.StackBase + 2 * page_size;
+        size = reserve - 2 * page_size;
+        NtAllocateVirtualMemory( GetCurrentProcess(), &addr, 0, &size, MEM_COMMIT, PAGE_READWRITE );
+
+        /* note: limit is lower than base since the stack grows down */
+        stack->OldStackBase = 0;
+        stack->OldStackLimit = 0;
+        stack->DeallocationStack = alloc.StackBase;
+        stack->StackBase = (char *)alloc.StackBase + reserve;
+        stack->StackLimit = (char *)alloc.StackBase + 2 * page_size;
+    }
+    return status;
+}
+
+
+/**********************************************************************
+ *           RtlFreeUserStack (NTDLL.@)
+ */
+void WINAPI RtlFreeUserStack( void *stack )
+{
+    SIZE_T size = 0;
+
+    TRACE("stack %p\n", stack);
+
+    NtFreeVirtualMemory( NtCurrentProcess(), &stack, &size, MEM_RELEASE );
+}
+
+
 /******************************************************************************
  *              RtlGetNtGlobalFlags   (NTDLL.@)
  */
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
deleted file mode 100644
index 8e512c5d85a..00000000000
--- a/dlls/ntdll/virtual.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Win32 virtual memory functions
- *
- * Copyright 1997, 2002 Alexandre Julliard
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include <assert.h>
-#include <errno.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-
-#include "ntstatus.h"
-#define WIN32_NO_STATUS
-#define NONAMELESSUNION
-#include "windef.h"
-#include "winternl.h"
-#include "wine/debug.h"
-#include "ntdll_misc.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(virtual);
-
-
-/**********************************************************************
- *           RtlCreateUserStack (NTDLL.@)
- */
-NTSTATUS WINAPI RtlCreateUserStack( SIZE_T commit, SIZE_T reserve, ULONG zero_bits,
-                                    SIZE_T commit_align, SIZE_T reserve_align, INITIAL_TEB *stack )
-{
-    PROCESS_STACK_ALLOCATION_INFORMATION alloc;
-    NTSTATUS status;
-
-    TRACE("commit %#lx, reserve %#lx, zero_bits %u, commit_align %#lx, reserve_align %#lx, stack %p\n",
-            commit, reserve, zero_bits, commit_align, reserve_align, stack);
-
-    if (!commit_align || !reserve_align)
-        return STATUS_INVALID_PARAMETER;
-
-    if (!commit || !reserve)
-    {
-        IMAGE_NT_HEADERS *nt = RtlImageNtHeader( NtCurrentTeb()->Peb->ImageBaseAddress );
-        if (!reserve) reserve = nt->OptionalHeader.SizeOfStackReserve;
-        if (!commit) commit = nt->OptionalHeader.SizeOfStackCommit;
-    }
-
-    reserve = (reserve + reserve_align - 1) & ~(reserve_align - 1);
-    commit = (commit + commit_align - 1) & ~(commit_align - 1);
-
-    if (reserve < commit) reserve = commit;
-    if (reserve < 0x100000) reserve = 0x100000;
-    reserve = (reserve + 0xffff) & ~0xffff;  /* round to 64K boundary */
-
-    alloc.ReserveSize = reserve;
-    alloc.ZeroBits = zero_bits;
-    status = NtSetInformationProcess( GetCurrentProcess(), ProcessThreadStackAllocation,
-                                      &alloc, sizeof(alloc) );
-    if (!status)
-    {
-        void *addr = alloc.StackBase;
-        SIZE_T size = page_size;
-
-        NtAllocateVirtualMemory( GetCurrentProcess(), &addr, 0, &size, MEM_COMMIT, PAGE_NOACCESS );
-        addr = (char *)alloc.StackBase + page_size;
-        NtAllocateVirtualMemory( GetCurrentProcess(), &addr, 0, &size, MEM_COMMIT, PAGE_READWRITE | PAGE_GUARD );
-        addr = (char *)alloc.StackBase + 2 * page_size;
-        size = reserve - 2 * page_size;
-        NtAllocateVirtualMemory( GetCurrentProcess(), &addr, 0, &size, MEM_COMMIT, PAGE_READWRITE );
-
-        /* note: limit is lower than base since the stack grows down */
-        stack->OldStackBase = 0;
-        stack->OldStackLimit = 0;
-        stack->DeallocationStack = alloc.StackBase;
-        stack->StackBase = (char *)alloc.StackBase + reserve;
-        stack->StackLimit = (char *)alloc.StackBase + 2 * page_size;
-    }
-    return status;
-}
-
-
-/**********************************************************************
- *           RtlFreeUserStack (NTDLL.@)
- */
-void WINAPI RtlFreeUserStack( void *stack )
-{
-    SIZE_T size = 0;
-
-    TRACE("stack %p\n", stack);
-
-    NtFreeVirtualMemory( NtCurrentProcess(), &stack, &size, MEM_RELEASE );
-}




More information about the wine-cvs mailing list