Commit a1dfdfaf authored by Zebediah Figura's avatar Zebediah Figura Committed by Alexandre Julliard

ntoskrnl.exe: Implement KeReleaseSpinLockFromDpcLevel().

parent fbe23bdd
...@@ -594,7 +594,7 @@ ...@@ -594,7 +594,7 @@
@ stdcall KeReleaseMutex(ptr long) @ stdcall KeReleaseMutex(ptr long)
@ stdcall KeReleaseSemaphore(ptr long long long) @ stdcall KeReleaseSemaphore(ptr long long long)
@ stdcall -arch=arm,arm64,x86_64 KeReleaseSpinLock(ptr long) @ stdcall -arch=arm,arm64,x86_64 KeReleaseSpinLock(ptr long)
@ stub KeReleaseSpinLockFromDpcLevel @ stdcall KeReleaseSpinLockFromDpcLevel(ptr)
@ stub KeRemoveByKeyDeviceQueue @ stub KeRemoveByKeyDeviceQueue
@ stub KeRemoveByKeyDeviceQueueIfBusy @ stub KeRemoveByKeyDeviceQueueIfBusy
@ stub KeRemoveDeviceQueue @ stub KeRemoveDeviceQueue
......
...@@ -386,7 +386,6 @@ void WINAPI KeInitializeSpinLock( KSPIN_LOCK *lock ) ...@@ -386,7 +386,6 @@ void WINAPI KeInitializeSpinLock( KSPIN_LOCK *lock )
*lock = 0; *lock = 0;
} }
#ifndef __i386__
static inline void small_pause(void) static inline void small_pause(void)
{ {
#ifdef __x86_64__ #ifdef __x86_64__
...@@ -397,6 +396,16 @@ static inline void small_pause(void) ...@@ -397,6 +396,16 @@ static inline void small_pause(void)
} }
/*********************************************************************** /***********************************************************************
* KeReleaseSpinLockFromDpcLevel (NTOSKRNL.EXE.@)
*/
void WINAPI KeReleaseSpinLockFromDpcLevel( KSPIN_LOCK *lock )
{
TRACE("lock %p.\n", lock);
InterlockedExchangePointer( (void **)lock, 0 );
}
#ifndef __i386__
/***********************************************************************
* KeReleaseSpinLock (NTOSKRNL.EXE.@) * KeReleaseSpinLock (NTOSKRNL.EXE.@)
*/ */
void WINAPI KeReleaseSpinLock( KSPIN_LOCK *lock, KIRQL irql ) void WINAPI KeReleaseSpinLock( KSPIN_LOCK *lock, KIRQL irql )
......
...@@ -1443,6 +1443,7 @@ ULONG WINAPI KeQueryTimeIncrement(void); ...@@ -1443,6 +1443,7 @@ ULONG WINAPI KeQueryTimeIncrement(void);
LONG WINAPI KeReleaseMutex(PRKMUTEX,BOOLEAN); LONG WINAPI KeReleaseMutex(PRKMUTEX,BOOLEAN);
LONG WINAPI KeReleaseSemaphore(PRKSEMAPHORE,KPRIORITY,LONG,BOOLEAN); LONG WINAPI KeReleaseSemaphore(PRKSEMAPHORE,KPRIORITY,LONG,BOOLEAN);
void WINAPI KeReleaseSpinLock(KSPIN_LOCK*,KIRQL); void WINAPI KeReleaseSpinLock(KSPIN_LOCK*,KIRQL);
void WINAPI KeReleaseSpinLockFromDpcLevel(KSPIN_LOCK*);
LONG WINAPI KeResetEvent(PRKEVENT); LONG WINAPI KeResetEvent(PRKEVENT);
LONG WINAPI KeSetEvent(PRKEVENT,KPRIORITY,BOOLEAN); LONG WINAPI KeSetEvent(PRKEVENT,KPRIORITY,BOOLEAN);
KPRIORITY WINAPI KeSetPriorityThread(PKTHREAD,KPRIORITY); KPRIORITY WINAPI KeSetPriorityThread(PKTHREAD,KPRIORITY);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment