# HG changeset patch # User Juergen Gross # Date 1327399383 -3600 # Node ID 5589314aa984152c684bedffb4276272646314f0 # Parent 370924e204dc29e12cd807dd730974d6b2bc53d3 introduce and use common macros for selecting cpupool based cpumasks There are several instances of the same construct finding the cpumask for a cpupool. Use macros instead. Signed-off-by: juergen.gross@xxxxxxxxxxxxxx diff -r 370924e204dc -r 5589314aa984 xen/common/domctl.c --- a/xen/common/domctl.c Mon Jan 23 15:10:43 2012 +0000 +++ b/xen/common/domctl.c Tue Jan 24 11:03:03 2012 +0100 @@ -518,7 +518,7 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc goto maxvcpu_out; ret = -ENOMEM; - online = (d->cpupool == NULL) ? &cpu_online_map : d->cpupool->cpu_valid; + online = cpupool_online_cpumask(d->cpupool); if ( max > d->max_vcpus ) { struct vcpu **vcpus; diff -r 370924e204dc -r 5589314aa984 xen/common/sched_credit.c --- a/xen/common/sched_credit.c Mon Jan 23 15:10:43 2012 +0000 +++ b/xen/common/sched_credit.c Tue Jan 24 11:03:03 2012 +0100 @@ -72,8 +72,6 @@ #define CSCHED_VCPU(_vcpu) ((struct csched_vcpu *) (_vcpu)->sched_priv) #define CSCHED_DOM(_dom) ((struct csched_dom *) (_dom)->sched_priv) #define RUNQ(_cpu) (&(CSCHED_PCPU(_cpu)->runq)) -#define CSCHED_CPUONLINE(_pool) \ - (((_pool) == NULL) ? &cpupool_free_cpus : (_pool)->cpu_valid) /* @@ -471,7 +469,7 @@ _csched_cpu_pick(const struct scheduler * Pick from online CPUs in VCPU's affinity mask, giving a * preference to its current processor if it's in there. */ - online = CSCHED_CPUONLINE(vc->domain->cpupool); + online = cpupool_scheduler_cpumask(vc->domain->cpupool); cpumask_and(&cpus, online, vc->cpu_affinity); cpu = cpumask_test_cpu(vc->processor, &cpus) ? vc->processor @@ -1230,7 +1228,7 @@ csched_load_balance(struct csched_privat int peer_cpu; BUG_ON( cpu != snext->vcpu->processor ); - online = CSCHED_CPUONLINE(per_cpu(cpupool, cpu)); + online = cpupool_scheduler_cpumask(per_cpu(cpupool, cpu)); /* If this CPU is going offline we shouldn't steal work. */ if ( unlikely(!cpumask_test_cpu(cpu, online)) ) diff -r 370924e204dc -r 5589314aa984 xen/common/sched_credit2.c --- a/xen/common/sched_credit2.c Mon Jan 23 15:10:43 2012 +0000 +++ b/xen/common/sched_credit2.c Tue Jan 24 11:03:03 2012 +0100 @@ -169,8 +169,6 @@ integer_param("sched_credit2_migrate_res ((struct csched_private *)((_ops)->sched_data)) #define CSCHED_VCPU(_vcpu) ((struct csched_vcpu *) (_vcpu)->sched_priv) #define CSCHED_DOM(_dom) ((struct csched_dom *) (_dom)->sched_priv) -#define CSCHED_CPUONLINE(_pool) \ - (((_pool) == NULL) ? &cpupool_free_cpus : (_pool)->cpu_valid) /* CPU to runq_id macro */ #define c2r(_ops, _cpu) (CSCHED_PRIV(_ops)->runq_map[(_cpu)]) /* CPU to runqueue struct macro */ diff -r 370924e204dc -r 5589314aa984 xen/common/sched_sedf.c --- a/xen/common/sched_sedf.c Mon Jan 23 15:10:43 2012 +0000 +++ b/xen/common/sched_sedf.c Tue Jan 24 11:03:03 2012 +0100 @@ -12,9 +12,6 @@ #include #include #include - -#define SEDF_CPUONLINE(_pool) \ - (((_pool) == NULL) ? &cpupool_free_cpus : (_pool)->cpu_valid) #ifndef NDEBUG #define SEDF_STATS @@ -397,7 +394,7 @@ static int sedf_pick_cpu(const struct sc cpumask_t online_affinity; cpumask_t *online; - online = SEDF_CPUONLINE(v->domain->cpupool); + online = cpupool_scheduler_cpumask(v->domain->cpupool); cpumask_and(&online_affinity, v->cpu_affinity, online); return cpumask_first(&online_affinity); } @@ -801,7 +798,8 @@ static struct task_slice sedf_do_schedul */ if ( tasklet_work_scheduled || (list_empty(runq) && list_empty(waitq)) || - unlikely(!cpumask_test_cpu(cpu, SEDF_CPUONLINE(per_cpu(cpupool, cpu)))) ) + unlikely(!cpumask_test_cpu(cpu, + cpupool_scheduler_cpumask(per_cpu(cpupool, cpu)))) ) { ret.task = IDLETASK(cpu); ret.time = SECONDS(1); diff -r 370924e204dc -r 5589314aa984 xen/common/schedule.c --- a/xen/common/schedule.c Mon Jan 23 15:10:43 2012 +0000 +++ b/xen/common/schedule.c Tue Jan 24 11:03:03 2012 +0100 @@ -77,9 +77,7 @@ static struct scheduler __read_mostly op #define DOM2OP(_d) (((_d)->cpupool == NULL) ? &ops : ((_d)->cpupool->sched)) #define VCPU2OP(_v) (DOM2OP((_v)->domain)) -#define VCPU2ONLINE(_v) \ - (((_v)->domain->cpupool == NULL) ? &cpu_online_map \ - : (_v)->domain->cpupool->cpu_valid) +#define VCPU2ONLINE(_v) cpupool_online_cpumask((_v)->domain->cpupool) static inline void trace_runstate_change(struct vcpu *v, int new_state) { @@ -1418,7 +1416,7 @@ void schedule_dump(struct cpupool *c) cpumask_t *cpus; sched = (c == NULL) ? &ops : c->sched; - cpus = (c == NULL) ? &cpupool_free_cpus : c->cpu_valid; + cpus = cpupool_scheduler_cpumask(c); printk("Scheduler: %s (%s)\n", sched->name, sched->opt_name); SCHED_OP(sched, dump_settings); diff -r 370924e204dc -r 5589314aa984 xen/include/xen/sched-if.h --- a/xen/include/xen/sched-if.h Mon Jan 23 15:10:43 2012 +0000 +++ b/xen/include/xen/sched-if.h Tue Jan 24 11:03:03 2012 +0100 @@ -204,4 +204,9 @@ struct cpupool atomic_t refcnt; }; +#define cpupool_scheduler_cpumask(_pool) \ + (((_pool) == NULL) ? &cpupool_free_cpus : (_pool)->cpu_valid) +#define cpupool_online_cpumask(_pool) \ + (((_pool) == NULL) ? &cpu_online_map : (_pool)->cpu_valid) + #endif /* __XEN_SCHED_IF_H__ */