scheduler: Return time stolen by irq and ipi handlers
This commit is contained in:
@@ -1101,6 +1101,11 @@ _scheduler_reschedule(void)
|
||||
oldThread->state = oldThread->next_state;
|
||||
scheduler_thread_data* schedulerOldThreadData = oldThread->scheduler_data;
|
||||
|
||||
// return time spent in interrupts
|
||||
schedulerOldThreadData->stolen_time
|
||||
+= gCPU[thisCPU].interrupt_time
|
||||
- schedulerOldThreadData->last_interrupt_time;
|
||||
|
||||
bool enqueueOldThread = false;
|
||||
bool putOldThreadAtBack = false;
|
||||
switch (oldThread->next_state) {
|
||||
@@ -1184,6 +1189,10 @@ _scheduler_reschedule(void)
|
||||
// track CPU activity
|
||||
track_cpu_activity(oldThread, nextThread, thisCore);
|
||||
|
||||
// start counting time spent in interrupts
|
||||
nextThread->scheduler_data->last_interrupt_time
|
||||
= gCPU[thisCPU].interrupt_time;
|
||||
|
||||
if (nextThread != oldThread || oldThread->cpu->preempted) {
|
||||
timer* quantumTimer = &oldThread->cpu->quantum_timer;
|
||||
if (!oldThread->cpu->preempted)
|
||||
|
||||
@@ -162,6 +162,7 @@ struct scheduler_thread_data {
|
||||
bigtime_t time_left;
|
||||
bigtime_t stolen_time;
|
||||
bigtime_t quantum_start;
|
||||
bigtime_t last_interrupt_time;
|
||||
|
||||
bigtime_t measure_active_time;
|
||||
bigtime_t measure_time;
|
||||
|
||||
Reference in New Issue
Block a user