MCS locks are smaller and don't rely on vcore_id()
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 4 Mar 2011 23:16:48 +0000 (15:16 -0800)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:36:00 +0000 (17:36 -0700)
commit6eff36f573aa6397f944e19b6a4e5bfba2f595c4
tree265032028684ba6a63b6c89d3e608c7778935936
parentcf7ab7ce4412f65633a056420b3451f513bf45b9
MCS locks are smaller and don't rely on vcore_id()

If you had a non-irq_save MCS lock, you would have issues with having
multiple threads lock on the same vcore, or a thread locking and
unlocking on different vcores.

Also, this only uses memory for the callers spinning location (the
qnode) when needed, instead of statically allocating it.  The memory for
these should be per-thread (TLS, stack, whatever).  This also gets rid
of the need for the padding.
user/c3po/threads/threadlib.c
user/parlib/bthread.c
user/parlib/include/mcs.h
user/parlib/mcs.c
user/parlib/vcore.c
user/pthread/pthread.c