KiIdleLoop

VOID __stdcall __noreturn KiIdleLoop(){
  struct _KPRCB *CurrentPrcb; 
  _ETHREAD *IdleThread; 
  int v2; 
  _ETHREAD *NextThread; 
  unsigned __int64 v4; 
  unsigned __int64 v5; 
  void *retaddr; 

  if( (_BYTE)KeSmapEnabled )
    __clac();
  retaddr = 0i64;
  CurrentPrcb = KeGetCurrentPrcb();
  while( 1 )
  {
    while( 1 )
    {
      if( HvlEnableIdleYield )
        _mm_pause();
      _enable();
      _disable();
      if( (CurrentPrcb->DpcRequestSummary & 0x3F) != 0 )
        KiRetireDpcList(CurrentPrcb);
      if( CurrentPrcb->QuantumEnd )
      {
        CurrentPrcb->QuantumEnd = 0;
        _enable();
        KiQuantumEnd();
        _disable();
      }
      _InterlockedOr8((volatile signed __int8 *)&CurrentPrcb->IdleHalt, 1u);
      if( !CurrentPrcb->NextThread )
        break;
      CurrentPrcb->IdleHalt = 0;
      _enable();
      IdleThread = CurrentPrcb->IdleThread;
      if( _interlockedbittestandset64((volatile signed __int32 *)&CurrentPrcb->PrcbLock, 0i64) )
      {
        v2 = 0;
        do
        {
          do
          {
            ++v2;
            _mm_pause();
          }
          while( (CurrentPrcb->PrcbLock & 1) != 0 );
        }
        while( _interlockedbittestandset64((volatile signed __int32 *)&CurrentPrcb->PrcbLock, 0i64) );
      }
      NextThread = CurrentPrcb->NextThread;
      CurrentPrcb->NextThread = 0i64;
      if( NextThread != IdleThread )
      {
        _disable();
        ++CurrentPrcb->NestingLevel;
        v4 = __rdtsc();
        v5 = (((unsigned __int64)HIDWORD(v4) << 32) | (unsigned int)v4) - CurrentPrcb->StartCycles;
        IdleThread->Tcb.CycleTime += v5;
        CurrentPrcb->StartCycles += v5;
        _enable();
        CurrentPrcb->CurrentThread = NextThread;
        NextThread->Tcb.WaitBlockFill6[68] = 2;
        _InterlockedAnd64((volatile signed __int64 *)&CurrentPrcb->PrcbLock, 0i64);
        goto LABEL_23;
      }
      CurrentPrcb->PrcbLock = 0i64;
    }
    if( CurrentPrcb->IdleSchedule )
    {
      CurrentPrcb->IdleHalt = 0;
      _enable();
      if( KiIdleSchedule(CurrentPrcb) )
      {
LABEL_23:
        CurrentPrcb->InterruptRequest |= (CurrentPrcb->DpcRequestSummary & 0x2F) != 0;
        if( (_BYTE)KeSmapEnabled )
          __stac();
        SwapContext();
        if( (_BYTE)KeSmapEnabled )
          __clac();
      }
    }
    else
    {
      if( (CurrentPrcb->DpcRequestSummary & 0x3F) == 0 )
      {
        if( (_BYTE)KeSmapEnabled )
          __stac();
        __writecr8(0i64);
        PoIdle(CurrentPrcb);
        _enable();
        __writecr8(2ui64);
        if( (_BYTE)KeSmapEnabled )
          __clac();
      }
      CurrentPrcb->IdleHalt = 0;
    }
  }
}

Referenced by:

KiSystemStartup