ntoskrnl.exe: Implement KeAcquireSpinLockAtDpcLevel().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
a1dfdfaf22
commit
da4291dfc5
|
@ -510,7 +510,7 @@
|
||||||
@ stub Ke386QueryIoAccessMap
|
@ stub Ke386QueryIoAccessMap
|
||||||
@ stdcall Ke386SetIoAccessMap(long ptr)
|
@ stdcall Ke386SetIoAccessMap(long ptr)
|
||||||
@ stub KeAcquireInterruptSpinLock
|
@ stub KeAcquireInterruptSpinLock
|
||||||
@ stub KeAcquireSpinLockAtDpcLevel
|
@ stdcall KeAcquireSpinLockAtDpcLevel(ptr)
|
||||||
@ stdcall -arch=arm,arm64,x86_64 KeAcquireSpinLockRaiseToDpc(ptr)
|
@ stdcall -arch=arm,arm64,x86_64 KeAcquireSpinLockRaiseToDpc(ptr)
|
||||||
@ stub KeAddSystemServiceTable
|
@ stub KeAddSystemServiceTable
|
||||||
@ stub KeAreApcsDisabled
|
@ stub KeAreApcsDisabled
|
||||||
|
|
|
@ -395,6 +395,16 @@ static inline void small_pause(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* KeAcquireSpinLockAtDpcLevel (NTOSKRNL.EXE.@)
|
||||||
|
*/
|
||||||
|
void WINAPI KeAcquireSpinLockAtDpcLevel( KSPIN_LOCK *lock )
|
||||||
|
{
|
||||||
|
TRACE("lock %p.\n", lock);
|
||||||
|
while (!InterlockedCompareExchangePointer( (void **)lock, (void *)1, (void *)0 ))
|
||||||
|
small_pause();
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* KeReleaseSpinLockFromDpcLevel (NTOSKRNL.EXE.@)
|
* KeReleaseSpinLockFromDpcLevel (NTOSKRNL.EXE.@)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1427,6 +1427,7 @@ void WINAPI KeAcquireSpinLock(KSPIN_LOCK*,KIRQL*);
|
||||||
#define KeAcquireSpinLock( lock, irql ) *(irql) = KeAcquireSpinLockRaiseToDpc( lock )
|
#define KeAcquireSpinLock( lock, irql ) *(irql) = KeAcquireSpinLockRaiseToDpc( lock )
|
||||||
KIRQL WINAPI KeAcquireSpinLockRaiseToDpc(KSPIN_LOCK*);
|
KIRQL WINAPI KeAcquireSpinLockRaiseToDpc(KSPIN_LOCK*);
|
||||||
#endif
|
#endif
|
||||||
|
void WINAPI KeAcquireSpinLockAtDpcLevel(KSPIN_LOCK*);
|
||||||
BOOLEAN WINAPI KeCancelTimer(KTIMER*);
|
BOOLEAN WINAPI KeCancelTimer(KTIMER*);
|
||||||
void WINAPI KeClearEvent(PRKEVENT);
|
void WINAPI KeClearEvent(PRKEVENT);
|
||||||
NTSTATUS WINAPI KeDelayExecutionThread(KPROCESSOR_MODE,BOOLEAN,LARGE_INTEGER*);
|
NTSTATUS WINAPI KeDelayExecutionThread(KPROCESSOR_MODE,BOOLEAN,LARGE_INTEGER*);
|
||||||
|
|
Loading…
Reference in New Issue