Moves retvals, start_routine, and args to the 2LSs
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 3 Mar 2011 01:55:41 +0000 (17:55 -0800)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:35:59 +0000 (17:35 -0700)
commit3c8c02f157e7b7c656b81bfb62cd11593daa55a5
treee441cd184f1c085b8e9bd9504cea179b7056ba10
parentb16299dc282b4619d691eb9175a629dacb5bd151
Moves retvals, start_routine, and args to the 2LSs

Gets the vcore/uthread code out of the business of worrying about
function arguments, stacks, return values, etc.  It also cleans up the
pthread code a bid (don't have to look into the uthread much), with the
exception of init_user_tf().  No way to avoid that look (either for
that, or for stacktop).

It also splits uthread_create() from uthread_runnable(), which was
necessary for the arg indirection (which we did in uthread before), and
is also sort of nice.

Not 100% on this.  Depends if we're going to want schedulers that don't
care about retvals, args, and such, or if they want to do it in a way
that isn't pthreads.  Imagine a creating a thread that takes more than
one argument!!!  *gasp*!  My main concern is that pthread-specific
things get buried in the vcore/uthread code.
user/parlib/include/vcore.h
user/parlib/vcore.c
user/pthread/pthread.c
user/pthread/pthread.h