scheduler: Update used time when thread yields or sleeps

This commit is contained in:
Pawel Dziepak
2014-01-16 23:26:09 +01:00
parent 082d3c1015
commit 7f212f45c3
@@ -277,6 +277,10 @@ ThreadData::GoesAway()
ASSERT(fReady);
bigtime_t timeUsed = system_time() - fQuantumStart;
ASSERT(timeUsed >= 0);
fTimeLeft -= timeUsed;
if (!fReceivedPenalty)
_IncreasePenalty(false);
fHasSlept = true;
@@ -416,15 +420,15 @@ ThreadData::HasQuantumEnded(bool wasPreempted, bool hasYielded)
{
SCHEDULER_ENTER_FUNCTION();
bigtime_t timeUsed = system_time() - fQuantumStart;
ASSERT(timeUsed >= 0);
fTimeLeft -= timeUsed;
if (hasYielded) {
fTimeLeft = 0;
return true;
}
bigtime_t timeUsed = system_time() - fQuantumStart;
ASSERT(timeUsed >= 0);
fTimeLeft -= timeUsed;
// too little time left, it's better make the next quantum a bit longer
int32 skipTime = gCurrentMode->minimal_quantum / 2;
if (wasPreempted || fTimeLeft <= skipTime) {