Module: wine Branch: master Commit: fa6f56b3614229baea6b42ebfd0453462df4306d URL: https://source.winehq.org/git/wine.git/?a=commit;h=fa6f56b3614229baea6b42ebf...
Author: Zebediah Figura z.figura12@gmail.com Date: Wed Jan 23 23:50:34 2019 -0600
hal: Implement KeReleaseSpinLock().
Signed-off-by: Zebediah Figura z.figura12@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/hal/hal.c | 11 +++++++++-- dlls/hal/hal.spec | 2 +- include/ddk/wdm.h | 1 + 3 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/dlls/hal/hal.c b/dlls/hal/hal.c index 5560d9b..924fd9e 100644 --- a/dlls/hal/hal.c +++ b/dlls/hal/hal.c @@ -26,6 +26,7 @@ #include "ntstatus.h" #define WIN32_NO_STATUS #include "windef.h" +#include "winbase.h" #include "winternl.h" #include "excpt.h" #include "ddk/ntddk.h" @@ -76,9 +77,15 @@ KIRQL WINAPI DECLSPEC_HIDDEN __regs_KfAcquireSpinLock(PKSPIN_LOCK SpinLock) }
DEFINE_FASTCALL2_ENTRYPOINT( KfReleaseSpinLock ) -VOID WINAPI DECLSPEC_HIDDEN __regs_KfReleaseSpinLock(PKSPIN_LOCK SpinLock, KIRQL NewIrql) +void WINAPI DECLSPEC_HIDDEN __regs_KfReleaseSpinLock( KSPIN_LOCK *lock, KIRQL irql ) { - FIXME( "(%p %u) stub!\n", SpinLock, NewIrql ); + KeReleaseSpinLock( lock, irql ); +} + +void WINAPI KeReleaseSpinLock( KSPIN_LOCK *lock, KIRQL irql ) +{ + TRACE("lock %p, irql %u.\n", lock, irql); + InterlockedExchangePointer( (void **)lock, 0 ); } #endif /* __i386__ */
diff --git a/dlls/hal/hal.spec b/dlls/hal/hal.spec index 818e56c..8596052 100644 --- a/dlls/hal/hal.spec +++ b/dlls/hal/hal.spec @@ -76,7 +76,7 @@ @ stub KeRaiseIrql @ stub KeRaiseIrqlToDpcLevel @ stub KeRaiseIrqlToSynchLevel -@ stdcall -arch=i386 KeReleaseSpinLock(ptr long) ntoskrnl.exe.KeReleaseSpinLock +@ stdcall -arch=i386 KeReleaseSpinLock(ptr long) @ stub KeStallExecutionProcessor @ stub READ_PORT_BUFFER_UCHAR @ stub READ_PORT_BUFFER_ULONG diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h index 3aa1c8a..d964ecb 100644 --- a/include/ddk/wdm.h +++ b/include/ddk/wdm.h @@ -1434,6 +1434,7 @@ void WINAPI KeQueryTickCount(LARGE_INTEGER*); ULONG WINAPI KeQueryTimeIncrement(void); LONG WINAPI KeReleaseMutex(PRKMUTEX,BOOLEAN); LONG WINAPI KeReleaseSemaphore(PRKSEMAPHORE,KPRIORITY,LONG,BOOLEAN); +void WINAPI KeReleaseSpinLock(KSPIN_LOCK*,KIRQL); LONG WINAPI KeResetEvent(PRKEVENT); LONG WINAPI KeSetEvent(PRKEVENT,KPRIORITY,BOOLEAN); KPRIORITY WINAPI KeSetPriorityThread(PKTHREAD,KPRIORITY);