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.