diff options
author | Richard Braun <rbraun@sceen.net> | 2013-05-24 20:24:01 +0200 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2013-05-24 20:25:09 +0200 |
commit | 4b7bab60037521dee5f1338db809a22a9fd8acd0 (patch) | |
tree | 12aae80ee7adea0941ee362082aecba3f29ece18 /kern/llsync.c | |
parent | 8be42c8a1a104aed546ed09e17752b4c486b98e7 (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.c | 8 |
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--; |