Commit de92136a authored by unknown's avatar unknown
Browse files

Merge joreland@bk-internal.mysql.com:/home/bk/mysql-4.1

into mysql.com:/home/jonas/src/mysql-4.1

parents 37e2873f 8c3d70e2
Loading
Loading
Loading
Loading
+22 −20
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ FastScheduler::activateSendPacked()
void 
FastScheduler::doJob()
{
  Uint32 init_loopCount = 0;
  Uint32 loopCount = 0;
  Uint32 TminLoops = getBOccupancy() + EXTRA_SIGNALS_PER_DO_JOB;
  Uint32 TloopMax = (Uint32)globalData.loopMax;
  if (TminLoops < TloopMax) {
@@ -94,10 +94,9 @@ FastScheduler::doJob()
  if (TloopMax < MIN_NUMBER_OF_SIG_PER_DO_JOB) {
    TloopMax = MIN_NUMBER_OF_SIG_PER_DO_JOB;
  }//if
  do{
    Uint32 loopCount = init_loopCount;
    register Uint32 tHighPrio = globalData.highestAvailablePrio;
  register Signal* signal = getVMSignals();
  register Uint32 tHighPrio= globalData.highestAvailablePrio;
  do{
    while ((tHighPrio < LEVEL_IDLE) && (loopCount < TloopMax)) {
      // signal->garbage_register(); 
      // To ensure we find bugs quickly
@@ -155,24 +154,27 @@ FastScheduler::doJob()
      }//if
      loopCount++;
    }//while
    if (globalData.sendPackedActivated == 1) {
      Uint32 t1 = theDoJobTotalCounter;
      Uint32 t2 = theDoJobCallCounter;
      t1 += (loopCount - init_loopCount);
      t2++;
      theDoJobTotalCounter = t1;
      theDoJobCallCounter = t2;
      if (t2 == 8192) {
	reportDoJobStatistics(t1 >> 13);
    sendPacked();
    tHighPrio = globalData.highestAvailablePrio;
    if(getBOccupancy() > MAX_OCCUPANCY)
    {
      if(loopCount != TloopMax)
	abort();
      assert( loopCount == TloopMax );
      TloopMax += 512;
    }
  } while ((getBOccupancy() > MAX_OCCUPANCY) ||
           ((loopCount < TloopMax) &&
            (tHighPrio < LEVEL_IDLE)));

  theDoJobCallCounter ++;
  theDoJobTotalCounter += loopCount;
  if (theDoJobCallCounter == 8192) {
    reportDoJobStatistics(theDoJobTotalCounter >> 13);
    theDoJobCallCounter = 0;
    theDoJobTotalCounter = 0;
  }//if
    }//if
    init_loopCount = loopCount;
    sendPacked();
  } while ((getBOccupancy() > MAX_OCCUPANCY) ||
           ((init_loopCount < TloopMax) &&
            (globalData.highestAvailablePrio < LEVEL_IDLE)));

}//FastScheduler::doJob()

void FastScheduler::sendPacked()