Fix dependency on vcoreid in barrier and cond var.
authorDavid Zhu <yuzhu@cs.berkeley.edu>
Sat, 1 May 2010 04:34:04 +0000 (21:34 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:35:46 +0000 (17:35 -0700)
commit960eb8bfa633ca5a85a7154050f7fe46ac47ceb5
tree187aad687db15cd1bb45982dc3289d3d33f70c61
parent220a29a1da583384e6fbf99803c7787504dbd803
Fix dependency on vcoreid in barrier and cond var.

Bthread used vcoreid to find the unique waiter, but that is incorrect in
pthread, since threads can yield and move to another vcore. For the barrier
and condition variable impelmentation, it only requires a unique waiter.
So we allocate that unique waiter from an array of them.

next slot is just an optimization to give us a better chance of finding
an empty slot quickly. So the race on that is benign.
user/include/pthread.h
user/parlib/pthread.c