Fixes preemption handling bug
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 5 Sep 2012 23:48:58 +0000 (16:48 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 5 Sep 2012 23:48:58 +0000 (16:48 -0700)
commit8766b01cf0b1724579537a9c70c7329f1e5c4507
tree5b2e4a2ed7b9d19399e3935f8360f8fb0442531b
parent03997225218259cef7b80cacd59cc3e9853fe19e
Fixes preemption handling bug

If a vcore comes up while another vcore is stealing its uthread, it
needs to check for preemptions.  There are a bunch of ways to do this.
The old way was wrong, since it assumed the preempt_ev_q had an actual
mbox, which it wasn't.  Given our current preempt_ev_q style, we want to
check our public mbox for any preempt-msg-spam, which we'd get if we
were the last core around.

Note this might not be ideal - we still have a lot of messages being
sent, and we might be able to cut that down by using a different style.
For now, it fixes the bug.
user/parlib/uthread.c