Rebase against a952453888fb5df3c70edf357820bc924b4f3e7f.

This commit is contained in:
Alistair Leslie-Hughes
2021-01-21 12:00:14 +11:00
parent 76f8eb15f1
commit 2f619b2a53
8 changed files with 53 additions and 130 deletions

View File

@@ -1,4 +1,4 @@
From b29db29cb8eb0fa8ba0153438c777417f2b41387 Mon Sep 17 00:00:00 2001
From 76e611ca640aeab6ff440d6bfad61e8b8e899093 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.
@@ -798,20 +798,21 @@ index 0262e50d980..968d636f86e 100644
static FORCEINLINE HANDLE WINAPI GetCurrentProcess(void)
diff --git a/include/winnt.h b/include/winnt.h
index ff1a6f4e90e..38f4f3e01a5 100644
index 98233348cd6..a478aa5128a 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -6910,7 +6910,9 @@ static inline BOOLEAN BitScanReverse(DWORD *index, DWORD mask)
@@ -6910,8 +6910,10 @@ static inline BOOLEAN BitScanReverse(DWORD *index, DWORD mask)
#pragma intrinsic(_InterlockedExchange)
#pragma intrinsic(_InterlockedExchangeAdd)
#pragma intrinsic(_InterlockedIncrement)
+#pragma intrinsic(_InterlockedIncrement16)
#pragma intrinsic(_InterlockedDecrement)
#pragma intrinsic(_InterlockedOr)
+#pragma intrinsic(_InterlockedDecrement16)
long _InterlockedCompareExchange(long volatile*,long,long);
long long _InterlockedCompareExchange64(long long volatile*,long long,long long);
@@ -6918,15 +6920,22 @@ long long _InterlockedCompareExchange64(long long volatile*,long long,long long)
@@ -6919,16 +6921,23 @@ long long _InterlockedCompareExchange64(long long volatile*,long long,long long)
unsigned char _InterlockedCompareExchange128(volatile __int64 *, __int64, __int64, __int64 *);
#endif
long _InterlockedDecrement(long volatile*);
@@ -819,6 +820,7 @@ index ff1a6f4e90e..38f4f3e01a5 100644
long _InterlockedExchange(long volatile*,long);
long _InterlockedExchangeAdd(long volatile*,long);
long _InterlockedIncrement(long volatile*);
long _InterlockedOr(long volatile *,long);
+short _InterlockedIncrement16(short volatile *);
static FORCEINLINE LONG WINAPI InterlockedCompareExchange( LONG volatile *dest, LONG xchg, LONG compare )
@@ -834,8 +836,8 @@ index ff1a6f4e90e..38f4f3e01a5 100644
static FORCEINLINE LONGLONG WINAPI InterlockedCompareExchange64( LONGLONG volatile *dest, LONGLONG xchg, LONGLONG compare )
{
return _InterlockedCompareExchange64( (long long volatile *)dest, compare, xchg );
@@ -6959,6 +6968,11 @@ static FORCEINLINE LONG WINAPI InterlockedDecrement( LONG volatile *dest )
return _InterlockedDecrement( (long volatile *)dest );
@@ -6966,6 +6975,11 @@ static FORCEINLINE LONG WINAPI InterlockedOr( LONG volatile *dest, LONG val )
return _InterlockedOr( (long volatile *)dest, val );
}
+static FORCEINLINE short WINAPI InterlockedDecrement16( short volatile *dest )
@@ -846,7 +848,7 @@ index ff1a6f4e90e..38f4f3e01a5 100644
#ifndef __i386__
#pragma intrinsic(_InterlockedCompareExchangePointer)
@@ -7040,11 +7054,21 @@ static FORCEINLINE LONG WINAPI InterlockedIncrement( LONG volatile *dest )
@@ -7092,11 +7106,21 @@ static FORCEINLINE LONG WINAPI InterlockedIncrement( LONG volatile *dest )
return __sync_add_and_fetch( dest, 1 );
}