diff --git a/src/system/kernel/scheduler/scheduler.cpp b/src/system/kernel/scheduler/scheduler.cpp
index 67f99e2..711b93c 100644
a
|
b
|
reschedule(int32 nextState)
|
337 | 337 | oldThread->state = nextState; |
338 | 338 | |
339 | 339 | // return time spent in interrupts |
340 | | oldThreadData->SetStolenInterruptTime(gCPU[thisCPU].interrupt_time); |
| 340 | if (!oldThreadData->IsIdle()) |
| 341 | oldThreadData->SetStolenInterruptTime(gCPU[thisCPU].interrupt_time); |
341 | 342 | |
342 | 343 | bool enqueueOldThread = false; |
343 | 344 | bool putOldThreadAtBack = false; |
diff --git a/src/system/kernel/scheduler/scheduler_thread.h b/src/system/kernel/scheduler/scheduler_thread.h
index 1127b69..40bc5fd 100644
a
|
b
|
ThreadData::SetStolenInterruptTime(bigtime_t interruptTime)
|
274 | 274 | SCHEDULER_ENTER_FUNCTION(); |
275 | 275 | |
276 | 276 | interruptTime -= fLastInterruptTime; |
| 277 | ASSERT(interruptTime >= 0); |
| 278 | ASSERT(fStolenTime >= 0); |
277 | 279 | fStolenTime += interruptTime; |
278 | 280 | } |
279 | 281 | |
… |
… |
ThreadData::GetQuantumLeft()
|
283 | 285 | { |
284 | 286 | SCHEDULER_ENTER_FUNCTION(); |
285 | 287 | |
| 288 | ASSERT(!IsIdle()); |
| 289 | ASSERT(fStolenTime >= 0); |
| 290 | ASSERT(gCurrentMode->minimal_quantum >= 0); |
286 | 291 | bigtime_t stolenTime = std::min(fStolenTime, gCurrentMode->minimal_quantum); |
287 | 292 | ASSERT(stolenTime >= 0); |
288 | 293 | fStolenTime -= stolenTime; |
… |
… |
ThreadData::HasQuantumEnded(bool wasPreempted, bool hasYielded)
|
318 | 323 | // too little time left, it's better make the next quantum a bit longer |
319 | 324 | bigtime_t skipTime = gCurrentMode->minimal_quantum / 2; |
320 | 325 | if (hasYielded || wasPreempted || timeLeft <= skipTime) { |
| 326 | ASSERT(fStolenTime >= 0); |
| 327 | ASSERT(timeLeft >= 0); |
321 | 328 | fStolenTime += timeLeft; |
322 | 329 | timeLeft = 0; |
323 | 330 | } |