Push control over vcores into parlib variables
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 3 May 2016 20:42:20 +0000 (16:42 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 3 May 2016 20:54:30 +0000 (16:54 -0400)
commit842b684f2a64bab3c323b89d2db619cf4933bb0b
tree11d8e3bddef36fe82bb5f2490d0ebe8cf3bdecb2
parent3b8664e0dfbddeada3a36e4e849ce34cb1224fab
Push control over vcores into parlib variables

We had an extension to pthreads: pthread_can_vcore_request().  It was a way
for an application to tell the 2LS to not request vcores or to yield
vcores.  The problem with making it a pthread extension is that it is 2LS
specific: an app needs to know/care about it's 2LS, and every 2LS needed to
reimplement the same logic.

By pushing it into parlib, we avoid all of that.  The app also gets
finer-grained control over what it needs (i.e., there's a minor difference
between not yielding and not requesting more cores).

Be careful using this new variable.  It'll prevent *any* vcores from being
requested, so you want to use it after the app requests whatever vcores it
wants (not including the one VC you get from being an MCP).  This variable
is a minor pain, and might not be worth keeping around.  We'll see.

This is actually a problem of having 2LSs that aren't app-specific enough.
The app knows what it wants, but the 2LS doesn't.  We're trying to find a
way to deal with that in a way that doesn't duplicate too much code.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
12 files changed:
tests/lock_test.c
tests/old/condvar_test.c
tests/old/fpperf.cc
tests/pthread_barrier_test.c
tests/pthread_switch.c
tests/pthread_test.c
user/parlib/include/parlib/parlib.h
user/parlib/parlib.c
user/parlib/vcore.c
user/pthread/pthread.c
user/pthread/pthread.h
user/utest/pvcalarm.c