Spin-PDR locks (preemption detection and recovery)
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 22 Feb 2013 00:45:46 +0000 (16:45 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 22 Feb 2013 00:45:46 +0000 (16:45 -0800)
commitcd382561a19c5af35a4a37c1cf59731912c32a6f
tree1717e9e1b1776f3607bf986b66cba2a6d1fef9ce
parent2612bab3f32715cb9d68585f63c990755233ef42
Spin-PDR locks (preemption detection and recovery)

Two variants: with and without CAS.  You can control which one you get
via the CONFIG var in your makelocal.  The default is to use CAS, and
RISCV will get NO_CAS (in spinlock.h) regardless of what you ask for.

The main drawback to the NO_CAS variety is the race where a lockholder
isn't advertised yet, and we're forced to do a linear scan of the
vcoremap to make sure all possible vcores are not preempted.  It won't
deadlock, but it could suck (though it might just be a minor
inconvenience compared to being preempted).
Makeconfig
Makelocal.template
user/parlib/include/spinlock.h
user/parlib/spinlock.c