Pthread join/exit/yield use the uth_yield func ptr
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 18 Apr 2012 22:23:50 +0000 (15:23 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 18 Apr 2012 22:45:03 +0000 (15:45 -0700)
commit42ff6d79fb47a0ac1a949b556e017bd64e29f4f5
tree85bb26245e8e0000cf971b921559fbee34e68728
parent50fe769d95e5cd9ae63e7bb931278eb87ab23e3f
Pthread join/exit/yield use the uth_yield func ptr

Instead of passing info via states and flags, we pass info via the
function pointer, like all other uses of uthread_yield.  This allows us
to clean up join/exit/yield a bit.

Now, all yield paths touch the 2LS, and in those callbacks the 2LS sets
the pthread's state, which it then sees in pth_thread_runnable() later
on.

Fun note: there was a cryptic comment above pthread_exit():

/* This function cannot be migrated to a different vcore by the
userspace scheduler.  Will need to sort that shit out. */

I think that was talking about the old version of exit, back when there
was no uthread library and when exit and yield had separate (but highly
similar) functions for getting into vcore context.

If you're curious, check it out.  It was from a commit 2 years and a day
ago.  (f35c3ed435fd).
user/pthread/pthread.c
user/pthread/pthread.h