summaryrefslogtreecommitdiff
path: root/kern/llsync.c
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2013-05-24 20:24:01 +0200
committerRichard Braun <rbraun@sceen.net>2013-05-24 20:25:09 +0200
commit4b7bab60037521dee5f1338db809a22a9fd8acd0 (patch)
tree12aae80ee7adea0941ee362082aecba3f29ece18 /kern/llsync.c
parent8be42c8a1a104aed546ed09e17752b4c486b98e7 (diff)
kern/llsync: disable interrupts on per-CPU data access
Not strictly required, but makes things simpler at virtually no cost.
Diffstat (limited to 'kern/llsync.c')
-rw-r--r--kern/llsync.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/kern/llsync.c b/kern/llsync.c
index 5b4966b0..7204c438 100644
--- a/kern/llsync.c
+++ b/kern/llsync.c
@@ -207,10 +207,10 @@ llsync_register_cpu(unsigned int cpu)
if (llsync_nr_registered_cpus == 1)
llsync_process_global_checkpoint(cpu);
- spinlock_unlock_intr_restore(&llsync_lock, flags);
-
assert(!llsync_cpus[cpu].registered);
llsync_cpus[cpu].registered = 1;
+
+ spinlock_unlock_intr_restore(&llsync_lock, flags);
}
static void
@@ -235,11 +235,11 @@ llsync_unregister_cpu(unsigned int cpu)
{
unsigned long flags;
+ spinlock_lock_intr_save(&llsync_lock, &flags);
+
assert(llsync_cpus[cpu].registered);
llsync_cpus[cpu].registered = 0;
- spinlock_lock_intr_save(&llsync_lock, &flags);
-
assert(bitmap_test(llsync_registered_cpus, cpu));
bitmap_clear(llsync_registered_cpus, cpu);
llsync_nr_registered_cpus--;