hal: Implement KeAcquireSpinLock().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
55463d4aa8
commit
389b8fc393
|
@ -69,11 +69,24 @@ BOOLEAN WINAPI DECLSPEC_HIDDEN __regs_ExTryToAcquireFastMutex(PFAST_MUTEX FastMu
|
|||
}
|
||||
|
||||
DEFINE_FASTCALL1_ENTRYPOINT( KfAcquireSpinLock )
|
||||
KIRQL WINAPI DECLSPEC_HIDDEN __regs_KfAcquireSpinLock(PKSPIN_LOCK SpinLock)
|
||||
KIRQL WINAPI DECLSPEC_HIDDEN __regs_KfAcquireSpinLock( KSPIN_LOCK *lock )
|
||||
{
|
||||
FIXME( "(%p) stub!\n", SpinLock );
|
||||
KIRQL irql;
|
||||
KeAcquireSpinLock( lock, &irql );
|
||||
return irql;
|
||||
}
|
||||
|
||||
return 0;
|
||||
static inline void small_pause(void)
|
||||
{
|
||||
__asm__ __volatile__( "rep;nop" : : : "memory" );
|
||||
}
|
||||
|
||||
void WINAPI KeAcquireSpinLock( KSPIN_LOCK *lock, KIRQL *irql )
|
||||
{
|
||||
TRACE("lock %p, irql %p.\n", lock, irql);
|
||||
while (!InterlockedCompareExchangePointer( (void **)lock, (void *)1, (void *)0 ))
|
||||
small_pause();
|
||||
*irql = 0;
|
||||
}
|
||||
|
||||
DEFINE_FASTCALL2_ENTRYPOINT( KfReleaseSpinLock )
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
@ stub IoSetPartitionInformation
|
||||
@ stub IoWritePartitionTable
|
||||
@ stub KdComPortInUse
|
||||
@ stub KeAcquireSpinLock
|
||||
@ stdcall -arch=i386 KeAcquireSpinLock(ptr ptr)
|
||||
@ stub KeFlushWriteBuffer
|
||||
@ stdcall -arch=arm,arm64,i386 KeGetCurrentIrql()
|
||||
@ stub KeLowerIrql
|
||||
|
|
|
@ -1419,6 +1419,9 @@ void WINAPI IoReleaseCancelSpinLock(KIRQL);
|
|||
NTSTATUS WINAPI IoSetDeviceInterfaceState(UNICODE_STRING*,BOOLEAN);
|
||||
NTSTATUS WINAPI IoWMIRegistrationControl(PDEVICE_OBJECT,ULONG);
|
||||
|
||||
#ifdef __i386__
|
||||
void WINAPI KeAcquireSpinLock(KSPIN_LOCK*,KIRQL*);
|
||||
#endif
|
||||
BOOLEAN WINAPI KeCancelTimer(KTIMER*);
|
||||
void WINAPI KeClearEvent(PRKEVENT);
|
||||
NTSTATUS WINAPI KeDelayExecutionThread(KPROCESSOR_MODE,BOOLEAN,LARGE_INTEGER*);
|
||||
|
|
Loading…
Reference in New Issue