_Interlocked(Compare)ExchangePointer is an intrinsic that doesn't exist on x86, use portable version.

svn path=/branches/cmake-bringup/; revision=50522
This commit is contained in:
Timo Kreuzer 2011-01-27 23:03:01 +00:00
parent 0af4984309
commit d57a12e96a

View file

@ -131,7 +131,7 @@ RtlpReleaseWaitBlockLockExclusive(IN OUT PRTL_SRWLOCK SRWLock,
} }
} }
(void)_InterlockedExchangePointer(&SRWLock->Ptr, (PVOID)NewValue); (void)InterlockedExchangePointer(&SRWLock->Ptr, (PVOID)NewValue);
if (FirstWaitBlock->Exclusive) if (FirstWaitBlock->Exclusive)
{ {
@ -186,7 +186,7 @@ RtlpReleaseWaitBlockLockLastShared(IN OUT PRTL_SRWLOCK SRWLock,
NewValue = RTL_SRWLOCK_OWNED; NewValue = RTL_SRWLOCK_OWNED;
} }
(void)_InterlockedExchangePointer(&SRWLock->Ptr, (PVOID)NewValue); (void)InterlockedExchangePointer(&SRWLock->Ptr, (PVOID)NewValue);
(void)InterlockedOr(&FirstWaitBlock->Wake, (void)InterlockedOr(&FirstWaitBlock->Wake,
TRUE); TRUE);
@ -420,7 +420,7 @@ RtlAcquireSRWLockShared(IN OUT PRTL_SRWLOCK SRWLock)
NewValue = (CurrentValue >> RTL_SRWLOCK_BITS) + 1; NewValue = (CurrentValue >> RTL_SRWLOCK_BITS) + 1;
NewValue = (NewValue << RTL_SRWLOCK_BITS) | (CurrentValue & RTL_SRWLOCK_MASK); NewValue = (NewValue << RTL_SRWLOCK_BITS) | (CurrentValue & RTL_SRWLOCK_MASK);
if ((LONG_PTR)_InterlockedCompareExchangePointer(&SRWLock->Ptr, if ((LONG_PTR)InterlockedCompareExchangePointer(&SRWLock->Ptr,
(PVOID)NewValue, (PVOID)NewValue,
(PVOID)CurrentValue) == CurrentValue) (PVOID)CurrentValue) == CurrentValue)
{ {
@ -499,7 +499,7 @@ RtlAcquireSRWLockShared(IN OUT PRTL_SRWLOCK SRWLock)
ASSERT_SRW_WAITBLOCK(&StackWaitBlock); ASSERT_SRW_WAITBLOCK(&StackWaitBlock);
NewValue = (ULONG_PTR)&StackWaitBlock | RTL_SRWLOCK_OWNED | RTL_SRWLOCK_CONTENDED; NewValue = (ULONG_PTR)&StackWaitBlock | RTL_SRWLOCK_OWNED | RTL_SRWLOCK_CONTENDED;
if ((LONG_PTR)_InterlockedCompareExchangePointer(&SRWLock->Ptr, if ((LONG_PTR)InterlockedCompareExchangePointer(&SRWLock->Ptr,
(PVOID)NewValue, (PVOID)NewValue,
(PVOID)CurrentValue) == CurrentValue) (PVOID)CurrentValue) == CurrentValue)
{ {
@ -521,7 +521,7 @@ RtlAcquireSRWLockShared(IN OUT PRTL_SRWLOCK SRWLock)
RTL_SRWLOCK_SHARED nor the RTL_SRWLOCK_OWNED bit is set */ RTL_SRWLOCK_SHARED nor the RTL_SRWLOCK_OWNED bit is set */
ASSERT(!(CurrentValue & RTL_SRWLOCK_CONTENDED)); ASSERT(!(CurrentValue & RTL_SRWLOCK_CONTENDED));
if ((LONG_PTR)_InterlockedCompareExchangePointer(&SRWLock->Ptr, if ((LONG_PTR)InterlockedCompareExchangePointer(&SRWLock->Ptr,
(PVOID)NewValue, (PVOID)NewValue,
(PVOID)CurrentValue) == CurrentValue) (PVOID)CurrentValue) == CurrentValue)
{ {
@ -580,7 +580,7 @@ RtlReleaseSRWLockShared(IN OUT PRTL_SRWLOCK SRWLock)
NewValue = (NewValue << RTL_SRWLOCK_BITS) | RTL_SRWLOCK_SHARED | RTL_SRWLOCK_OWNED; NewValue = (NewValue << RTL_SRWLOCK_BITS) | RTL_SRWLOCK_SHARED | RTL_SRWLOCK_OWNED;
} }
if ((LONG_PTR)_InterlockedCompareExchangePointer(&SRWLock->Ptr, if ((LONG_PTR)InterlockedCompareExchangePointer(&SRWLock->Ptr,
(PVOID)NewValue, (PVOID)NewValue,
(PVOID)CurrentValue) == CurrentValue) (PVOID)CurrentValue) == CurrentValue)
{ {
@ -639,7 +639,7 @@ RtlAcquireSRWLockExclusive(IN OUT PRTL_SRWLOCK SRWLock)
NewValue = (ULONG_PTR)&StackWaitBlock | RTL_SRWLOCK_SHARED | RTL_SRWLOCK_CONTENDED | RTL_SRWLOCK_OWNED; NewValue = (ULONG_PTR)&StackWaitBlock | RTL_SRWLOCK_SHARED | RTL_SRWLOCK_CONTENDED | RTL_SRWLOCK_OWNED;
if ((LONG_PTR)_InterlockedCompareExchangePointer(&SRWLock->Ptr, if ((LONG_PTR)InterlockedCompareExchangePointer(&SRWLock->Ptr,
(PVOID)NewValue, (PVOID)NewValue,
(PVOID)CurrentValue) == CurrentValue) (PVOID)CurrentValue) == CurrentValue)
{ {
@ -697,7 +697,7 @@ AddWaitBlock:
ASSERT_SRW_WAITBLOCK(&StackWaitBlock); ASSERT_SRW_WAITBLOCK(&StackWaitBlock);
NewValue = (ULONG_PTR)&StackWaitBlock | RTL_SRWLOCK_OWNED | RTL_SRWLOCK_CONTENDED; NewValue = (ULONG_PTR)&StackWaitBlock | RTL_SRWLOCK_OWNED | RTL_SRWLOCK_CONTENDED;
if ((LONG_PTR)_InterlockedCompareExchangePointer(&SRWLock->Ptr, if ((LONG_PTR)InterlockedCompareExchangePointer(&SRWLock->Ptr,
(PVOID)NewValue, (PVOID)NewValue,
(PVOID)CurrentValue) == CurrentValue) (PVOID)CurrentValue) == CurrentValue)
{ {
@ -767,7 +767,7 @@ RtlReleaseSRWLockExclusive(IN OUT PRTL_SRWLOCK SRWLock)
ASSERT(!(CurrentValue & ~RTL_SRWLOCK_OWNED)); ASSERT(!(CurrentValue & ~RTL_SRWLOCK_OWNED));
NewValue = 0; NewValue = 0;
if ((LONG_PTR)_InterlockedCompareExchangePointer(&SRWLock->Ptr, if ((LONG_PTR)InterlockedCompareExchangePointer(&SRWLock->Ptr,
(PVOID)NewValue, (PVOID)NewValue,
(PVOID)CurrentValue) == CurrentValue) (PVOID)CurrentValue) == CurrentValue)
{ {