[PATCH 3/4] ntoskrnl.exe: Implement plain spinlock functions on top of DPC-level ones.
Zebediah Figura
z.figura12 at gmail.com
Sun Jan 27 20:45:33 CST 2019
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/ntoskrnl.exe/sync.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/dlls/ntoskrnl.exe/sync.c b/dlls/ntoskrnl.exe/sync.c
index 31a3ad7209..2a4685c5b3 100644
--- a/dlls/ntoskrnl.exe/sync.c
+++ b/dlls/ntoskrnl.exe/sync.c
@@ -421,7 +421,7 @@ void WINAPI KeReleaseSpinLockFromDpcLevel( KSPIN_LOCK *lock )
void WINAPI KeReleaseSpinLock( KSPIN_LOCK *lock, KIRQL irql )
{
TRACE("lock %p, irql %u.\n", lock, irql);
- InterlockedExchangePointer( (void **)lock, 0 );
+ KeReleaseSpinLockFromDpcLevel( lock );
}
/***********************************************************************
@@ -430,8 +430,7 @@ void WINAPI KeReleaseSpinLock( KSPIN_LOCK *lock, KIRQL irql )
KIRQL WINAPI KeAcquireSpinLockRaiseToDpc( KSPIN_LOCK *lock )
{
TRACE("lock %p.\n", lock);
- while (!InterlockedCompareExchangePointer( (void **)lock, (void *)1, (void *)0 ))
- small_pause();
+ KeAcquireSpinLockAtDpcLevel( lock );
return 0;
}
#endif
--
2.20.1
More information about the wine-devel
mailing list