scheduler: Update used time when thread yields or sleeps
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user