mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
xen: add sched_unit_pause_nosync() and sched_unit_unpause()
The credit scheduler calls vcpu_pause_nosync() and vcpu_unpause() today. Add sched_unit_pause_nosync() and sched_unit_unpause() to perform the same operations on scheduler units instead. Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Dario Faggioli <dfaggioli@suse.com>
This commit is contained in:
1 parent
2a404605e9
commit
b218ad9f97
2 files changed
+19
-3
No files matched your search
@@ -1065,7 +1065,7 @@ csched_unit_remove(const struct scheduler *ops, struct sched_unit *unit)
|
||||
if ( test_and_clear_bit(CSCHED_FLAG_UNIT_PARKED, &svc->flags) )
|
||||
{
|
||||
SCHED_STAT_CRANK(unit_unpark);
|
||||
vcpu_unpause(svc->unit->vcpu_list);
|
||||
sched_unit_unpause(svc->unit);
|
||||
}
|
||||
|
||||
spin_lock_irq(&prv->lock);
|
||||
@@ -1515,7 +1515,7 @@ csched_acct(void* dummy)
|
||||
!test_and_set_bit(CSCHED_FLAG_UNIT_PARKED, &svc->flags) )
|
||||
{
|
||||
SCHED_STAT_CRANK(unit_park);
|
||||
vcpu_pause_nosync(svc->unit->vcpu_list);
|
||||
sched_unit_pause_nosync(svc->unit);
|
||||
}
|
||||
|
||||
/* Lower bound on credits */
|
||||
@@ -1539,7 +1539,7 @@ csched_acct(void* dummy)
|
||||
* if it is woken up here.
|
||||
*/
|
||||
SCHED_STAT_CRANK(unit_unpark);
|
||||
vcpu_unpause(svc->unit->vcpu_list);
|
||||
sched_unit_unpause(svc->unit);
|
||||
clear_bit(CSCHED_FLAG_UNIT_PARKED, &svc->flags);
|
||||
}
|
||||
|
||||
|
||||
@@ -466,6 +466,22 @@ static inline int sched_adjust_cpupool(const struct scheduler *s,
|
||||
return s->adjust_global ? s->adjust_global(s, op) : 0;
|
||||
}
|
||||
|
||||
static inline void sched_unit_pause_nosync(const struct sched_unit *unit)
|
||||
{
|
||||
struct vcpu *v;
|
||||
|
||||
for_each_sched_unit_vcpu ( unit, v )
|
||||
vcpu_pause_nosync(v);
|
||||
}
|
||||
|
||||
static inline void sched_unit_unpause(const struct sched_unit *unit)
|
||||
{
|
||||
struct vcpu *v;
|
||||
|
||||
for_each_sched_unit_vcpu ( unit, v )
|
||||
vcpu_unpause(v);
|
||||
}
|
||||
|
||||
#define REGISTER_SCHEDULER(x) static const struct scheduler *x##_entry \
|
||||
__used_section(".data.schedulers") = &x;
|
||||
|
||||
|
||||