KiReleaseQueuedSpinLockInstrumented
VOID __stdcall KiReleaseQueuedSpinLockInstrumented(_KSPIN_LOCK_QUEUE *LockQueue, PVOID ReturnAddress){
UINT64 v4;
_KSPIN_LOCK_QUEUE *volatile Next;
v4 = __rdtsc();
_m_prefetchw(LockQueue);
Next = LockQueue->Next;
if( LockQueue->Next )
goto LABEL_4;
if( LockQueue != (_KSPIN_LOCK_QUEUE *)_InterlockedCompareExchange64(
(volatile signed __int64 *)LockQueue->Lock,
0i64,
(signed __int64)LockQueue) )
{
Next = KxWaitForLockChainValid(LockQueue);
LABEL_4:
LockQueue->Next = 0i64;
_InterlockedXor64((volatile signed __int64 *)&Next->Lock, 1ui64);
}
PerfLogSpinLockRelease(LockQueue->Lock, ReturnAddress, v4);
}Referenced by:
No references.