mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/sched: switch struct task_slice from vcpu to sched_unit
Let the schedulers put a sched_unit pointer into struct task_slice instead of a vcpu pointer. Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Dario Faggioli <dfaggioli@suse.com>
This commit is contained in:
1 parent
2a1a44c270
commit
c7591deba8
7 files changed
+20
-20
No files matched your search
@@ -560,9 +560,9 @@ a653sched_do_schedule(
|
||||
|
||||
/*
|
||||
* If there are more domains to run in the current major frame, set
|
||||
* new_task equal to the address of next domain's VCPU structure.
|
||||
* Otherwise, set new_task equal to the address of the idle task's VCPU
|
||||
* structure.
|
||||
* new_task equal to the address of next domain's sched_unit structure.
|
||||
* Otherwise, set new_task equal to the address of the idle task's
|
||||
* sched_unit structure.
|
||||
*/
|
||||
new_task = (sched_index < sched_priv->num_schedule_entries)
|
||||
? sched_priv->schedule[sched_index].vc
|
||||
@@ -598,7 +598,7 @@ a653sched_do_schedule(
|
||||
* of the selected task's VCPU structure.
|
||||
*/
|
||||
ret.time = next_switch_time - now;
|
||||
ret.task = new_task;
|
||||
ret.task = new_task->sched_unit;
|
||||
ret.migrated = 0;
|
||||
|
||||
BUG_ON(ret.time <= 0);
|
||||
|
||||
@@ -1993,9 +1993,9 @@ out:
|
||||
*/
|
||||
ret.time = (is_idle_vcpu(snext->vcpu) ?
|
||||
-1 : tslice);
|
||||
ret.task = snext->vcpu;
|
||||
ret.task = snext->vcpu->sched_unit;
|
||||
|
||||
CSCHED_VCPU_CHECK(ret.task);
|
||||
CSCHED_VCPU_CHECK(ret.task->vcpu_list);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -3637,9 +3637,9 @@ csched2_schedule(
|
||||
* Return task to run next...
|
||||
*/
|
||||
ret.time = csched2_runtime(ops, cpu, snext, now);
|
||||
ret.task = snext->vcpu;
|
||||
ret.task = snext->vcpu->sched_unit;
|
||||
|
||||
CSCHED2_VCPU_CHECK(ret.task);
|
||||
CSCHED2_VCPU_CHECK(ret.task->vcpu_list);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -819,10 +819,10 @@ static struct task_slice null_schedule(const struct scheduler *ops,
|
||||
if ( tasklet_work_scheduled )
|
||||
{
|
||||
trace_var(TRC_SNULL_TASKLET, 1, 0, NULL);
|
||||
ret.task = idle_vcpu[cpu];
|
||||
ret.task = idle_vcpu[cpu]->sched_unit;
|
||||
}
|
||||
else
|
||||
ret.task = per_cpu(npc, cpu).vcpu;
|
||||
ret.task = per_cpu(npc, cpu).vcpu->sched_unit;
|
||||
ret.migrated = 0;
|
||||
ret.time = -1;
|
||||
|
||||
@@ -857,7 +857,7 @@ static struct task_slice null_schedule(const struct scheduler *ops,
|
||||
{
|
||||
vcpu_assign(prv, wvc->vcpu, cpu);
|
||||
list_del_init(&wvc->waitq_elem);
|
||||
ret.task = wvc->vcpu;
|
||||
ret.task = wvc->vcpu->sched_unit;
|
||||
goto unlock;
|
||||
}
|
||||
}
|
||||
@@ -869,10 +869,10 @@ static struct task_slice null_schedule(const struct scheduler *ops,
|
||||
cpumask_set_cpu(cpu, &prv->cpus_free);
|
||||
}
|
||||
|
||||
if ( unlikely(ret.task == NULL || !vcpu_runnable(ret.task)) )
|
||||
ret.task = idle_vcpu[cpu];
|
||||
if ( unlikely(ret.task == NULL || !unit_runnable(ret.task)) )
|
||||
ret.task = idle_vcpu[cpu]->sched_unit;
|
||||
|
||||
NULL_VCPU_CHECK(ret.task);
|
||||
NULL_VCPU_CHECK(ret.task->vcpu_list);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -1129,7 +1129,7 @@ rt_schedule(const struct scheduler *ops, s_time_t now, bool_t tasklet_work_sched
|
||||
}
|
||||
ret.time = snext->cur_budget; /* invoke the scheduler next time */
|
||||
}
|
||||
ret.task = snext->vcpu;
|
||||
ret.task = snext->vcpu->sched_unit;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ static struct task_slice sched_idle_schedule(
|
||||
const unsigned int cpu = smp_processor_id();
|
||||
struct task_slice ret = { .time = -1 };
|
||||
|
||||
ret.task = idle_vcpu[cpu];
|
||||
ret.task = sched_idle_unit(cpu);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1627,7 +1627,7 @@ static void schedule(void)
|
||||
sched = this_cpu(scheduler);
|
||||
next_slice = sched->do_schedule(sched, now, tasklet_work_scheduled);
|
||||
|
||||
next = next_slice.task;
|
||||
next = next_slice.task->vcpu_list;
|
||||
|
||||
sd->curr = next->sched_unit;
|
||||
|
||||
|
||||
@@ -226,9 +226,9 @@ static inline spinlock_t *pcpu_schedule_trylock(unsigned int cpu)
|
||||
}
|
||||
|
||||
struct task_slice {
|
||||
struct vcpu *task;
|
||||
s_time_t time;
|
||||
bool_t migrated;
|
||||
struct sched_unit *task;
|
||||
s_time_t time;
|
||||
bool_t migrated;
|
||||
};
|
||||
|
||||
struct scheduler {
|
||||
|
||||