Rebase against b922b5aeef18fd30b13a4e86c115d68e505c9393.

This commit is contained in:
Alistair Leslie-Hughes
2021-02-12 11:53:19 +11:00
parent 41e15516bd
commit 41cb9f5179
4 changed files with 65 additions and 86 deletions

View File

@ -1,4 +1,4 @@
From 3544dcdce27e40469fe57ddbc9be2128cf13cee8 Mon Sep 17 00:00:00 2001
From d44f0a6e60f59ea4ca6ba91e4cd3b0e81a99cb20 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Mon, 2 Nov 2020 20:24:07 -0600
Subject: [PATCH] ntdll: Reimplement Win32 futexes on top of thread-ID alerts.
@ -14,10 +14,10 @@ Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
6 files changed, 187 insertions(+), 173 deletions(-)
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index 60b8ffc46d6..6d6b73effb4 100644
index e0d371e4c54..8fc5e54e4a4 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -89,6 +89,8 @@ extern void init_directories(void) DECLSPEC_HIDDEN;
@@ -90,6 +90,8 @@ extern void init_directories(void) DECLSPEC_HIDDEN;
extern struct _KUSER_SHARED_DATA *user_shared_data DECLSPEC_HIDDEN;
@ -248,23 +248,23 @@ index 8df7015df9f..a1c0b90b366 100644
+ }
}
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 8e5a3a3a3a3..3a74b55aa1e 100644
index 425e8770294..bc308e17bee 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -86,6 +86,8 @@ void WINAPI RtlExitUserThread( ULONG status )
@@ -85,6 +85,8 @@ void WINAPI RtlExitUserThread( ULONG status )
NtQueryInformationThread( GetCurrentThread(), ThreadAmILastThread, &last, sizeof(last), NULL );
if (last) RtlExitUserProcess( status );
LdrShutdownThread();
RtlFreeThreadActivationContextStack();
+ /* must be done last, in particular after any heap allocations */
+ addr_wait_free_entry();
for (;;) NtTerminateThread( GetCurrentThread(), status );
}
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index e8853415205..585b30ea21b 100644
index bfbdfa1a5c4..5d59d2684b8 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -1582,9 +1582,6 @@ static struct unix_funcs unix_funcs =
@@ -1583,9 +1583,6 @@ static struct unix_funcs unix_funcs =
#endif
DbgUiIssueRemoteBreakin,
RtlGetSystemTimePrecise,
@ -275,10 +275,10 @@ index e8853415205..585b30ea21b 100644
fast_RtlpUnWaitCriticalSection,
fast_RtlDeleteCriticalSection,
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index 569334580cd..39766a88e20 100644
index 86b9b3a4978..0ea8e28613c 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -77,10 +77,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(sync);
@@ -78,10 +78,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(sync);
HANDLE keyed_event = 0;
@ -289,7 +289,7 @@ index 569334580cd..39766a88e20 100644
static const char *debugstr_timeout( const LARGE_INTEGER *timeout )
{
if (!timeout) return "(infinite)";
@@ -190,24 +186,6 @@ static void timespec_from_timeout( struct timespec *timespec, const LARGE_INTEGE
@@ -191,24 +187,6 @@ static void timespec_from_timeout( struct timespec *timespec, const LARGE_INTEGE
#endif
@ -314,7 +314,7 @@ index 569334580cd..39766a88e20 100644
/* create a struct security_descriptor and contained information in one contiguous piece of memory */
NTSTATUS alloc_object_attributes( const OBJECT_ATTRIBUTES *attr, struct object_attributes **ret,
data_size_t *ret_len )
@@ -2839,71 +2817,6 @@ NTSTATUS CDECL fast_RtlWakeConditionVariable( RTL_CONDITION_VARIABLE *variable,
@@ -2895,71 +2873,6 @@ NTSTATUS CDECL fast_RtlWakeConditionVariable( RTL_CONDITION_VARIABLE *variable,
return STATUS_SUCCESS;
}
@ -386,7 +386,7 @@ index 569334580cd..39766a88e20 100644
#else
NTSTATUS CDECL fast_RtlTryAcquireSRWLockExclusive( RTL_SRWLOCK *lock )
@@ -2946,79 +2859,4 @@ NTSTATUS CDECL fast_wait_cv( RTL_CONDITION_VARIABLE *variable, const void *value
@@ -3002,79 +2915,4 @@ NTSTATUS CDECL fast_wait_cv( RTL_CONDITION_VARIABLE *variable, const void *value
return STATUS_NOT_IMPLEMENTED;
}
@ -491,5 +491,5 @@ index ed78d08559a..cd890152230 100644
/* fast locks */
NTSTATUS (CDECL *fast_RtlpWaitForCriticalSection)( RTL_CRITICAL_SECTION *crit, int timeout );
--
2.20.1
2.30.0