pthread: Reimplement mutexes, CVs, and RW locks (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 27 Apr 2017 19:19:13 +0000 (15:19 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 3 May 2017 16:16:32 +0000 (12:16 -0400)
commitd31bd5722471eb4e9e507f0f691213c222a8afd1
tree710aa703c392041df22cbb8d126596e0ce4ffd6c
parent4ccd822993c01e67e2552b1d46709d13958b8fd1
pthread: Reimplement mutexes, CVs, and RW locks (XCC)

Pthreads had its own older code.  Now, we just use the uthread code.  It's
mostly straightforward, except that pthread mutexes have a type that
determines whether or not they are recursive or not.

I also moved some of the older support code around, like spin_to_sleep().
That's still used by the barrier code.

If applications want to spin before sleeping on mutexes (adaptive mutex /
brewtexes), they can use their own primitives.  On a related note, if your
context switch overhead is lower, then lure of spinning isn't as strong,
and spinning deprives the 2LS of a scheduling opportunity.

Rebuild your toolchain.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
user/pthread/pthread.c
user/pthread/pthread.h