SCPs can be 2LSs
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 13 Jul 2015 19:44:11 +0000 (15:44 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Jul 2015 20:07:52 +0000 (16:07 -0400)
commit9b9e26259326e8ba87f280737b75a300d26d42f0
tree69d53752d8089e86e60801ff1fc147262bea2730
parent73135fc796b594a9b801c5cf726f301f17702055
SCPs can be 2LSs

Ever since SCPs had vcore context, we were pretty close to having them
run a 2LS.  The main thing is to not turn into an MCP and to not make
vcore requests (even though that is currently harmless).

In the current instatiation, deciding to be an MCP must be done early
on, before calling uthread_mcp_init.  There are some races associated
with upgrading from an SCP to an MCP on the fly, after the 2LS has been
running.  Until we have a compelling case for that, we won't support it.

For now, the default is that processes with 2LSs will be MCPs.  In the
future, we'll probably change that, such that environment variables and
compile time options can control whether or not a process is an MCP or
SCP, possibly with SCP by default.

This variable exists in parlib.c.  Other control variables that are part
of Parlib's API will go here as well.  These are things that
applications can expect to exist (until the API changes!).
user/parlib/include/parlib.h
user/parlib/parlib.c [new file with mode: 0644]
user/parlib/uthread.c