Rebase against b8719736c5a022fa9c50f64adfc3ef58b40460f2.

This commit is contained in:
Zebediah Figura
2021-02-18 20:16:43 -06:00
parent 811467bf6a
commit aa8a3d90cb
33 changed files with 301 additions and 3157 deletions

View File

@@ -1,4 +1,4 @@
From 9f1b410e28ff85e4b7f6a36539e159f913c0ff05 Mon Sep 17 00:00:00 2001
From 328517d4516b3767ff21c6ffe4f45b29989edfea 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.
@@ -13,10 +13,10 @@ Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
5 files changed, 141 insertions(+), 502 deletions(-)
diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c
index 42b62a2cd87..d4944951dc6 100644
index 225216cbe2a..950a5047752 100644
--- a/dlls/ntdll/sync.c
+++ b/dlls/ntdll/sync.c
@@ -161,127 +161,23 @@ DWORD WINAPI RtlRunOnceExecuteOnce( RTL_RUN_ONCE *once, PRTL_RUN_ONCE_INIT_FN fu
@@ -160,127 +160,23 @@ DWORD WINAPI RtlRunOnceExecuteOnce( RTL_RUN_ONCE *once, PRTL_RUN_ONCE_INIT_FN fu
return RtlRunOnceComplete( once, 0, context ? *context : NULL );
}
@@ -159,7 +159,7 @@ index 42b62a2cd87..d4944951dc6 100644
/***********************************************************************
* RtlInitializeSRWLock (NTDLL.@)
@@ -308,11 +204,36 @@ void WINAPI RtlInitializeSRWLock( RTL_SRWLOCK *lock )
@@ -307,11 +203,36 @@ void WINAPI RtlInitializeSRWLock( RTL_SRWLOCK *lock )
*/
void WINAPI RtlAcquireSRWLockExclusive( RTL_SRWLOCK *lock )
{
@@ -200,7 +200,7 @@ index 42b62a2cd87..d4944951dc6 100644
}
/***********************************************************************
@@ -324,34 +245,34 @@ void WINAPI RtlAcquireSRWLockExclusive( RTL_SRWLOCK *lock )
@@ -323,34 +244,34 @@ void WINAPI RtlAcquireSRWLockExclusive( RTL_SRWLOCK *lock )
*/
void WINAPI RtlAcquireSRWLockShared( RTL_SRWLOCK *lock )
{
@@ -259,7 +259,7 @@ index 42b62a2cd87..d4944951dc6 100644
}
/***********************************************************************
@@ -359,11 +280,23 @@ void WINAPI RtlAcquireSRWLockShared( RTL_SRWLOCK *lock )
@@ -358,11 +279,23 @@ void WINAPI RtlAcquireSRWLockShared( RTL_SRWLOCK *lock )
*/
void WINAPI RtlReleaseSRWLockExclusive( RTL_SRWLOCK *lock )
{
@@ -287,7 +287,7 @@ index 42b62a2cd87..d4944951dc6 100644
}
/***********************************************************************
@@ -371,11 +304,22 @@ void WINAPI RtlReleaseSRWLockExclusive( RTL_SRWLOCK *lock )
@@ -370,11 +303,22 @@ void WINAPI RtlReleaseSRWLockExclusive( RTL_SRWLOCK *lock )
*/
void WINAPI RtlReleaseSRWLockShared( RTL_SRWLOCK *lock )
{
@@ -314,7 +314,7 @@ index 42b62a2cd87..d4944951dc6 100644
}
/***********************************************************************
@@ -387,13 +331,28 @@ void WINAPI RtlReleaseSRWLockShared( RTL_SRWLOCK *lock )
@@ -386,13 +330,28 @@ void WINAPI RtlReleaseSRWLockShared( RTL_SRWLOCK *lock )
*/
BOOLEAN WINAPI RtlTryAcquireSRWLockExclusive( RTL_SRWLOCK *lock )
{
@@ -348,7 +348,7 @@ index 42b62a2cd87..d4944951dc6 100644
}
/***********************************************************************
@@ -401,20 +360,29 @@ BOOLEAN WINAPI RtlTryAcquireSRWLockExclusive( RTL_SRWLOCK *lock )
@@ -400,20 +359,29 @@ BOOLEAN WINAPI RtlTryAcquireSRWLockExclusive( RTL_SRWLOCK *lock )
*/
BOOLEAN WINAPI RtlTryAcquireSRWLockShared( RTL_SRWLOCK *lock )
{
@@ -391,10 +391,10 @@ index 42b62a2cd87..d4944951dc6 100644
/***********************************************************************
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index d5e8153b313..05a45916714 100644
index f161040ff43..8e5e8410d1c 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -1584,12 +1584,6 @@ static struct unix_funcs unix_funcs =
@@ -1595,12 +1595,6 @@ static struct unix_funcs unix_funcs =
#endif
DbgUiIssueRemoteBreakin,
RtlGetSystemTimePrecise,
@@ -408,10 +408,10 @@ index d5e8153b313..05a45916714 100644
ntdll_ceil,
ntdll_cos,
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index 68c2e560938..baa1ab0e786 100644
index d4092438644..b67f5fc8f10 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -115,8 +115,6 @@ static inline ULONGLONG monotonic_counter(void)
@@ -114,8 +114,6 @@ static inline ULONGLONG monotonic_counter(void)
#define FUTEX_WAIT 0
#define FUTEX_WAKE 1
@@ -420,7 +420,7 @@ index 68c2e560938..baa1ab0e786 100644
static int futex_private = 128;
@@ -130,16 +128,6 @@ static inline int futex_wake( const int *addr, int val )
@@ -129,16 +127,6 @@ static inline int futex_wake( const int *addr, int val )
return syscall( __NR_futex, addr, FUTEX_WAKE | futex_private, val, NULL, 0, 0 );
}
@@ -437,7 +437,7 @@ index 68c2e560938..baa1ab0e786 100644
static inline int use_futexes(void)
{
static int supported = -1;
@@ -157,16 +145,6 @@ static inline int use_futexes(void)
@@ -156,16 +144,6 @@ static inline int use_futexes(void)
return supported;
}
@@ -454,7 +454,7 @@ index 68c2e560938..baa1ab0e786 100644
#endif
@@ -2449,290 +2427,3 @@ NTSTATUS WINAPI NtWaitForAlertByThreadId( const void *address, const LARGE_INTEG
@@ -2390,290 +2368,3 @@ NTSTATUS WINAPI NtWaitForAlertByThreadId( const void *address, const LARGE_INTEG
return NtWaitForSingleObject( ntdll_get_thread_data()->tid_alert_event, FALSE, timeout );
#endif
}
@@ -746,10 +746,10 @@ index 68c2e560938..baa1ab0e786 100644
-
-#endif
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index f3a85dcd8d4..182aa86e68f 100644
index dc6d5462c0c..ffc701b1c27 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -99,12 +99,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;
@@ -763,19 +763,19 @@ index f3a85dcd8d4..182aa86e68f 100644
extern USHORT * CDECL get_unix_codepage_data(void) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index 31f2c3a5cd8..db7540dc1b7 100644
index 046418e50e3..a90aa183287 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -27,7 +27,7 @@
@@ -26,7 +26,7 @@
struct _DISPATCHER_CONTEXT;
/* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 111
+#define NTDLL_UNIXLIB_VERSION 112
-#define NTDLL_UNIXLIB_VERSION 112
+#define NTDLL_UNIXLIB_VERSION 113
struct unix_funcs
{
@@ -40,14 +40,6 @@ struct unix_funcs
@@ -39,14 +39,6 @@ struct unix_funcs
NTSTATUS (WINAPI *DbgUiIssueRemoteBreakin)( HANDLE process );
LONGLONG (WINAPI *RtlGetSystemTimePrecise)(void);
@@ -791,5 +791,5 @@ index 31f2c3a5cd8..db7540dc1b7 100644
double (CDECL *atan)( double d );
double (CDECL *ceil)( double d );
--
2.30.0
2.20.1