Rebase against 3c2db20f66806074b047b0b3c76aa86ad79e3175.

This commit is contained in:
Zebediah Figura
2021-03-01 16:31:44 -06:00
parent 15f4220e49
commit 6b24c39d32
12 changed files with 78 additions and 288 deletions

View File

@@ -1,4 +1,4 @@
From 9a0cccb7476bf79cb2f5f0bc553c58044526477b Mon Sep 17 00:00:00 2001
From 8ab8ef02e2a7daf9296250c8a1b72a7ee0114cd9 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 aebea12e6ba..03142ba4bab 100644
index 72340a171c9..baf58ca17eb 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -86,6 +86,8 @@ extern const struct unix_funcs *unix_funcs DECLSPEC_HIDDEN;
@@ -85,6 +85,8 @@ extern const struct unix_funcs *unix_funcs DECLSPEC_HIDDEN;
extern struct _KUSER_SHARED_DATA *user_shared_data DECLSPEC_HIDDEN;
@@ -25,7 +25,7 @@ index aebea12e6ba..03142ba4bab 100644
+
/* locale */
extern LCID user_lcid, system_lcid;
extern DWORD ntdll_umbstowcs( const char* src, DWORD srclen, WCHAR* dst, DWORD dstlen ) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c
index f1263ae33fd..d652f55b630 100644
--- a/dlls/ntdll/sync.c
@@ -261,7 +261,7 @@ index 25496609f08..4f395336428 100644
}
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index df8d99ce489..9e873d655ca 100644
index b7e1432535d..aff4594ab46 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -1691,9 +1691,6 @@ static struct unix_funcs unix_funcs =
@@ -275,7 +275,7 @@ index df8d99ce489..9e873d655ca 100644
fast_RtlpUnWaitCriticalSection,
fast_RtlDeleteCriticalSection,
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index f4164b499da..0551682979c 100644
index 7d6423083e1..41005425a90 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -77,10 +77,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(sync);
@@ -467,15 +467,15 @@ index f4164b499da..0551682979c 100644
- mutex_unlock( &addr_mutex );
-}
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index bd2512030c2..933cd0d33ce 100644
index 290379a9310..e84b6052378 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -26,7 +26,7 @@
struct _DISPATCHER_CONTEXT;
/* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 113
+#define NTDLL_UNIXLIB_VERSION 114
-#define NTDLL_UNIXLIB_VERSION 115
+#define NTDLL_UNIXLIB_VERSION 116
struct unix_funcs
{

View File

@@ -1,4 +1,4 @@
From 66780246e8198c0b83c8955819a8d1a4b497ed8e Mon Sep 17 00:00:00 2001
From aae4ecb64fea01acde1b44c95f063acd29f74a7e Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Mon, 31 Aug 2020 23:38:09 -0500
Subject: [PATCH] ntdll: Reimplement the critical section fast path on top of
@@ -83,7 +83,7 @@ index 09975ac3d45..97a5ce7fffa 100644
return ret;
}
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index 9e873d655ca..d2f8202171c 100644
index aff4594ab46..38a18d9c949 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -1691,9 +1691,6 @@ static struct unix_funcs unix_funcs =
@@ -97,7 +97,7 @@ index 9e873d655ca..d2f8202171c 100644
fast_RtlAcquireSRWLockExclusive,
fast_RtlTryAcquireSRWLockShared,
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index 0551682979c..7b8bbe737f0 100644
index 41005425a90..6b97028fb68 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -2409,115 +2409,6 @@ NTSTATUS WINAPI NtWaitForAlertByThreadId( const void *address, const LARGE_INTEG
@@ -217,10 +217,10 @@ index 0551682979c..7b8bbe737f0 100644
/* Futex-based SRW lock implementation:
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index 75a8dc9c85d..3f4b93e42ed 100644
index d056b1500c9..4033d8fee76 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -94,9 +94,6 @@ extern void (WINAPI *pKiUserApcDispatcher)(CONTEXT*,ULONG_PTR,ULONG_PTR,ULON
@@ -98,9 +98,6 @@ extern void (WINAPI *pKiUserApcDispatcher)(CONTEXT*,ULONG_PTR,ULONG_PTR,ULON
extern NTSTATUS (WINAPI *pKiUserExceptionDispatcher)(EXCEPTION_RECORD*,CONTEXT*) DECLSPEC_HIDDEN;
extern void (WINAPI *pLdrInitializeThunk)(CONTEXT*,void**,ULONG_PTR,ULONG_PTR) DECLSPEC_HIDDEN;
extern void (WINAPI *pRtlUserThreadStart)( PRTL_THREAD_START_ROUTINE entry, void *arg ) DECLSPEC_HIDDEN;
@@ -231,15 +231,15 @@ index 75a8dc9c85d..3f4b93e42ed 100644
extern NTSTATUS CDECL fast_RtlAcquireSRWLockExclusive( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN;
extern NTSTATUS CDECL fast_RtlTryAcquireSRWLockShared( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index 933cd0d33ce..24f5d92b0a8 100644
index e84b6052378..f9c024d2e78 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -26,7 +26,7 @@
struct _DISPATCHER_CONTEXT;
/* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 114
+#define NTDLL_UNIXLIB_VERSION 115
-#define NTDLL_UNIXLIB_VERSION 116
+#define NTDLL_UNIXLIB_VERSION 117
struct unix_funcs
{

View File

@@ -1,4 +1,4 @@
From e2fca35720c0bb5bef7fc4993b163d5c8951530e Mon Sep 17 00:00:00 2001
From 2ab71fb4253f099683b9a9c8974643b505f001e1 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Mon, 31 Aug 2020 23:55:29 -0500
Subject: [PATCH] ntdll: Get rid of the direct futex path for condition
@@ -80,7 +80,7 @@ index 97a5ce7fffa..1e6afc4cfc8 100644
if (flags & RTL_CONDITION_VARIABLE_LOCKMODE_SHARED)
RtlAcquireSRWLockShared( lock );
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index d2f8202171c..ab27626fb6f 100644
index 38a18d9c949..58616212f15 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -1697,8 +1697,6 @@ static struct unix_funcs unix_funcs =
@@ -93,7 +93,7 @@ index d2f8202171c..ab27626fb6f 100644
ntdll_ceil,
ntdll_cos,
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index 7b8bbe737f0..ca18c1a22b1 100644
index 6b97028fb68..d4092438644 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -166,23 +166,6 @@ static int *get_futex(void **ptr)
@@ -187,10 +187,10 @@ index 7b8bbe737f0..ca18c1a22b1 100644
-
#endif
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index 3f4b93e42ed..504975538cc 100644
index 4033d8fee76..3ccb51e155c 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -100,10 +100,7 @@ extern NTSTATUS CDECL fast_RtlTryAcquireSRWLockShared( RTL_SRWLOCK *lock ) DECLS
@@ -104,10 +104,7 @@ extern NTSTATUS CDECL fast_RtlTryAcquireSRWLockShared( RTL_SRWLOCK *lock ) DECLS
extern NTSTATUS CDECL fast_RtlAcquireSRWLockShared( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN;
extern NTSTATUS CDECL fast_RtlReleaseSRWLockExclusive( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN;
extern NTSTATUS CDECL fast_RtlReleaseSRWLockShared( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN;
@@ -199,18 +199,18 @@ index 3f4b93e42ed..504975538cc 100644
-extern NTSTATUS CDECL fast_wait_cv( RTL_CONDITION_VARIABLE *variable, const void *value,
- const LARGE_INTEGER *timeout ) DECLSPEC_HIDDEN;
extern USHORT * CDECL get_unix_codepage_data(void) DECLSPEC_HIDDEN;
extern void CDECL get_locales( WCHAR *sys, WCHAR *user ) DECLSPEC_HIDDEN;
extern void CDECL virtual_release_address_space(void) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index 24f5d92b0a8..246fd44a53e 100644
index f9c024d2e78..ed9c6584939 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -26,7 +26,7 @@
struct _DISPATCHER_CONTEXT;
/* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 115
+#define NTDLL_UNIXLIB_VERSION 116
-#define NTDLL_UNIXLIB_VERSION 117
+#define NTDLL_UNIXLIB_VERSION 118
struct unix_funcs
{

View File

@@ -1,4 +1,4 @@
From 2bc63e7c52262630869ac5a12ecd7225ac533b8d Mon Sep 17 00:00:00 2001
From a85907faa73aef081c908fa48b3262301d105f22 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Sun, 22 Nov 2020 20:51:10 -0600
Subject: [PATCH] ntdll: Reimplement SRW locks on top of Win32 futexes.
@@ -392,7 +392,7 @@ index 1e6afc4cfc8..93a6a5fd7de 100644
/***********************************************************************
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index ab27626fb6f..f98e33b45fb 100644
index 58616212f15..45fe4259d19 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -1691,12 +1691,6 @@ static struct unix_funcs unix_funcs =
@@ -409,7 +409,7 @@ index ab27626fb6f..f98e33b45fb 100644
ntdll_ceil,
ntdll_cos,
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index ca18c1a22b1..11dd6d65fa0 100644
index d4092438644..b67f5fc8f10 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -114,8 +114,6 @@ static inline ULONGLONG monotonic_counter(void)
@@ -747,10 +747,10 @@ index ca18c1a22b1..11dd6d65fa0 100644
-
-#endif
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index 504975538cc..55e91f7a0bd 100644
index 3ccb51e155c..313244e5e59 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -94,12 +94,6 @@ extern void (WINAPI *pKiUserApcDispatcher)(CONTEXT*,ULONG_PTR,ULONG_PTR,ULON
@@ -98,12 +98,6 @@ extern void (WINAPI *pKiUserApcDispatcher)(CONTEXT*,ULONG_PTR,ULONG_PTR,ULON
extern NTSTATUS (WINAPI *pKiUserExceptionDispatcher)(EXCEPTION_RECORD*,CONTEXT*) DECLSPEC_HIDDEN;
extern void (WINAPI *pLdrInitializeThunk)(CONTEXT*,void**,ULONG_PTR,ULONG_PTR) DECLSPEC_HIDDEN;
extern void (WINAPI *pRtlUserThreadStart)( PRTL_THREAD_START_ROUTINE entry, void *arg ) DECLSPEC_HIDDEN;
@@ -762,17 +762,17 @@ index 504975538cc..55e91f7a0bd 100644
-extern NTSTATUS CDECL fast_RtlReleaseSRWLockShared( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN;
extern LONGLONG CDECL fast_RtlGetSystemTimePrecise(void) DECLSPEC_HIDDEN;
extern USHORT * CDECL get_unix_codepage_data(void) DECLSPEC_HIDDEN;
extern void CDECL virtual_release_address_space(void) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index 246fd44a53e..8527f44173b 100644
index ed9c6584939..090a694bb40 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -26,7 +26,7 @@
struct _DISPATCHER_CONTEXT;
/* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 116
+#define NTDLL_UNIXLIB_VERSION 117
-#define NTDLL_UNIXLIB_VERSION 118
+#define NTDLL_UNIXLIB_VERSION 119
struct unix_funcs
{