scheduler: Update used time when thread yields or sleeps
This commit is contained in:
@@ -277,6 +277,10 @@ ThreadData::GoesAway()
|
|||||||
|
|
||||||
ASSERT(fReady);
|
ASSERT(fReady);
|
||||||
|
|
||||||
|
bigtime_t timeUsed = system_time() - fQuantumStart;
|
||||||
|
ASSERT(timeUsed >= 0);
|
||||||
|
fTimeLeft -= timeUsed;
|
||||||
|
|
||||||
if (!fReceivedPenalty)
|
if (!fReceivedPenalty)
|
||||||
_IncreasePenalty(false);
|
_IncreasePenalty(false);
|
||||||
fHasSlept = true;
|
fHasSlept = true;
|
||||||
@@ -416,15 +420,15 @@ ThreadData::HasQuantumEnded(bool wasPreempted, bool hasYielded)
|
|||||||
{
|
{
|
||||||
SCHEDULER_ENTER_FUNCTION();
|
SCHEDULER_ENTER_FUNCTION();
|
||||||
|
|
||||||
|
bigtime_t timeUsed = system_time() - fQuantumStart;
|
||||||
|
ASSERT(timeUsed >= 0);
|
||||||
|
fTimeLeft -= timeUsed;
|
||||||
|
|
||||||
if (hasYielded) {
|
if (hasYielded) {
|
||||||
fTimeLeft = 0;
|
fTimeLeft = 0;
|
||||||
return true;
|
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
|
// too little time left, it's better make the next quantum a bit longer
|
||||||
int32 skipTime = gCurrentMode->minimal_quantum / 2;
|
int32 skipTime = gCurrentMode->minimal_quantum / 2;
|
||||||
if (wasPreempted || fTimeLeft <= skipTime) {
|
if (wasPreempted || fTimeLeft <= skipTime) {
|
||||||
|
|||||||
Reference in New Issue
Block a user