Zebediah Figura : ntoskrnl.exe: Implement plain spinlock functions on top of DPC-level ones.

Alexandre Julliard julliard at winehq.org
Mon Jan 28 16:17:01 CST 2019


Module: wine
Branch: master
Commit: 05f5cce6c8b8bf527f1c15ee0f87c27370b301eb
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=05f5cce6c8b8bf527f1c15ee0f87c27370b301eb

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Sun Jan 27 20:45:33 2019 -0600

ntoskrnl.exe: Implement plain spinlock functions on top of DPC-level ones.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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 31a3ad7..2a4685c 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




More information about the wine-cvs mailing list