uthread_yield() takes a func* and arg
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 18 Apr 2012 21:34:23 +0000 (14:34 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 18 Apr 2012 22:42:43 +0000 (15:42 -0700)
commit50fe769d95e5cd9ae63e7bb931278eb87ab23e3f
treee9842920eb06946ef3d032e251d9605def4cffe1
parent0715b754b421b70e785227784fb0748f7016fd56
uthread_yield() takes a func* and arg

We had a variety of ways to pass info across the uth_yield->__uth_yield
boundary.  Instead of doing all of that, we just tell uthread_yield to
run a function when it gets to vcore context.

The purpose of this function is to somehow deal with the uthread and its
reason for blocking.  This could be because it blocked on a syscall, or
perhaps for some 'external' reason, such as blocking on a mutex.  This
setup allows the mutex code to not be aware of 2LS-particulars, though
it still needs to know about uthreads.  This will help us with mutexes
and libraries that aren't bound to a particular 2LS, as well as simplify
many different mechanisms (like the pth specific stuff for join/exit).
user/parlib/include/uthread.h
user/parlib/uthread.c
user/pthread/pthread.c