aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common/tasklet.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-05-14 20:37:02 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-05-14 20:37:02 +0100
commit7f01473211b2586130c653d3b1ac15acc082d4df (patch)
tree48cda4464ba8a8ff424e5c3d7dd9d0aa3a9fa9c3 /xen/common/tasklet.c
parentf9ffb1134c8be2f6bffd14578c179d3f12371abd (diff)
downloadxen-7f01473211b2586130c653d3b1ac15acc082d4df.tar.gz
xen-7f01473211b2586130c653d3b1ac15acc082d4df.tar.bz2
xen-7f01473211b2586130c653d3b1ac15acc082d4df.zip
Remove many uses of cpu_possible_map and iterators over NR_CPUS.
The significant remaining culprits for x86 are credit2, hpet, and percpu-area subsystems. To be dealt with in a separate patch. Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'xen/common/tasklet.c')
-rw-r--r--xen/common/tasklet.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/xen/common/tasklet.c b/xen/common/tasklet.c
index b898535223..2e23232c41 100644
--- a/xen/common/tasklet.c
+++ b/xen/common/tasklet.c
@@ -19,7 +19,7 @@
#include <xen/cpu.h>
/* Some subsystems call into us before we are initialised. We ignore them. */
-static cpumask_t tasklets_initialised;
+static bool_t tasklets_initialised;
DEFINE_PER_CPU(unsigned long, tasklet_work_to_do);
@@ -44,7 +44,7 @@ void tasklet_schedule_on_cpu(struct tasklet *t, unsigned int cpu)
spin_lock_irqsave(&tasklet_lock, flags);
- if ( cpu_isset(cpu, tasklets_initialised) && !t->is_dead )
+ if ( tasklets_initialised && !t->is_dead )
{
t->scheduled_on = cpu;
if ( !t->is_running )
@@ -174,9 +174,9 @@ static int cpu_callback(
switch ( action )
{
case CPU_UP_PREPARE:
- if ( !cpu_test_and_set(cpu, tasklets_initialised) )
- INIT_LIST_HEAD(&per_cpu(tasklet_list, cpu));
+ INIT_LIST_HEAD(&per_cpu(tasklet_list, cpu));
break;
+ case CPU_UP_CANCELED:
case CPU_DEAD:
migrate_tasklets_from_cpu(cpu);
break;
@@ -196,6 +196,7 @@ void __init tasklet_subsys_init(void)
void *hcpu = (void *)(long)smp_processor_id();
cpu_callback(&cpu_nfb, CPU_UP_PREPARE, hcpu);
register_cpu_notifier(&cpu_nfb);
+ tasklets_initialised = 1;
}
/*