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;
|
oldThread->state = oldThread->next_state;
|
||||||
scheduler_thread_data* schedulerOldThreadData = oldThread->scheduler_data;
|
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 enqueueOldThread = false;
|
||||||
bool putOldThreadAtBack = false;
|
bool putOldThreadAtBack = false;
|
||||||
switch (oldThread->next_state) {
|
switch (oldThread->next_state) {
|
||||||
@@ -1184,6 +1189,10 @@ _scheduler_reschedule(void)
|
|||||||
// track CPU activity
|
// track CPU activity
|
||||||
track_cpu_activity(oldThread, nextThread, thisCore);
|
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) {
|
if (nextThread != oldThread || oldThread->cpu->preempted) {
|
||||||
timer* quantumTimer = &oldThread->cpu->quantum_timer;
|
timer* quantumTimer = &oldThread->cpu->quantum_timer;
|
||||||
if (!oldThread->cpu->preempted)
|
if (!oldThread->cpu->preempted)
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ struct scheduler_thread_data {
|
|||||||
bigtime_t time_left;
|
bigtime_t time_left;
|
||||||
bigtime_t stolen_time;
|
bigtime_t stolen_time;
|
||||||
bigtime_t quantum_start;
|
bigtime_t quantum_start;
|
||||||
|
bigtime_t last_interrupt_time;
|
||||||
|
|
||||||
bigtime_t measure_active_time;
|
bigtime_t measure_active_time;
|
||||||
bigtime_t measure_time;
|
bigtime_t measure_time;
|
||||||
|
|||||||
Reference in New Issue
Block a user