KiAbThreadInsertList
VOID __fastcall KiAbThreadInsertList(_ETHREAD *Thread, _SINGLE_LIST_ENTRY *ListHead, _SINGLE_LIST_ENTRY *ListEntry){
int v3;
UINT64 SpinCount;
v3 = 0;
LODWORD(SpinCount) = 0;
while( _interlockedbittestandset64((volatile signed __int32 *)&Thread->Tcb.ThreadLock, 0i64) )
{
do
KeYieldProcessorEx(&SpinCount);
while( Thread->Tcb.ThreadLock );
}
if( ListEntry->Next == (_SINGLE_LIST_ENTRY *)1 )
{
v3 = 1;
ListEntry->Next = ListHead->Next;
ListHead->Next = ListEntry;
}
KiReleaseThreadLockSafe((INT64)Thread);
if( v3 )
_InterlockedAdd16(&Thread->Tcb.KeReferenceCount, 1u);
}Referenced by:
ExpAcquireResourceExclusiveLite
ExpAcquireResourceSharedLite
ExpApplyPriorityBoost
KeAbProcessBaseIoPriorityChangeInternal
KeAbProcessEffectiveIoPriorityChange
KiAbSetMinimumThreadPriority
KiAbThreadBoostIoPriority
PsBoostThreadIoEx