KeSetPriorityBoost

VOID __stdcall KeSetPriorityBoost(_ETHREAD *TargetThread, INT64 BoostPriority){
  int v2; 
  char v4; 
  UINT8 CurrentIrql; 
  _KPRCB *CurrentPrcb; 
  volatile unsigned __int64 CycleTime; 
  struct _KPRCB *v8; 
  int Priority; 
  unsigned __int64 QuantumTarget; 
  _DWORD *SchedulerAssist; 
  UINT64 SpinCount; 
  _SINGLE_LIST_ENTRY ReadyList; 

  v2 = BoostPriority;
  if( TargetThread->Tcb.Process != (_EPROCESS *)&KiInitialProcess )
  {
    v4 = 0;
    ReadyList.Next = 0i64;
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(2ui64);
    CurrentPrcb = KeGetCurrentPrcb();
    if( TargetThread->Tcb.Priority <= 0 || TargetThread->Tcb.Priority >= (int)BoostPriority )
      goto LABEL_17;
    CycleTime = TargetThread->Tcb.CycleTime;
    v8 = KeGetCurrentPrcb();
    LODWORD(SpinCount) = 0;
    while( _interlockedbittestandset64((volatile signed __int32 *)&TargetThread->Tcb.ThreadLock, 0i64) )
    {
      do
        KeYieldProcessorEx(&SpinCount);
      while( TargetThread->Tcb.ThreadLock );
      SchedulerAssist = v8->SchedulerAssist;
      if( SchedulerAssist && v8->NestingLevel <= 1u )
        ++SchedulerAssist[6];
    }
    Priority = TargetThread->Tcb.Priority;
    if( TargetThread->Tcb.Priority > 0 && Priority < v2 )
    {
      v4 = 1;
      TargetThread->Tcb.PriorityDecrement += 16 * (v2 - Priority);
      KiSetPriorityThread(&TargetThread->Tcb, &ReadyList, (unsigned int)(char)v2);
      QuantumTarget = TargetThread->Tcb.QuantumTarget;
      if( CycleTime > QuantumTarget || QuantumTarget - CycleTime < (unsigned int)KiLockQuantumTarget )
        TargetThread->Tcb.QuantumTarget = CycleTime + (unsigned int)KiLockQuantumTarget;
    }
    TargetThread->Tcb.ThreadLock = 0i64;
    if( v4 )
      KiProcessDeferredReadyList(CurrentPrcb, &ReadyList, CurrentIrql);
    else
LABEL_17:
      __writecr8(CurrentIrql);
  }
}

Referenced by:

ExpApplyPriorityBoost
FsRtlpDoBoost
KeGenericProcessorCallback