Resolves race with __unmap and __map_vcore()
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 26 Sep 2011 20:49:06 +0000 (13:49 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:36:07 +0000 (17:36 -0700)
commit9f3be06ed507205f9628696edb3d86ca13e732ae
tree7a9c9b11eca64604b56cc3a56d4c2a6fd1f8b384
parent488cc00013a7a9948a655d482280c580d16c7ecf
Resolves race with __unmap and __map_vcore()

When you send a __preempt message (or __death), the unmapping happens on
the destination core.  If you were to try and give out the vcore
immediately, the old mapping would still be there.  This is a problem
that came about when we switch to using vcore lists.

Now we'll spin til the remote core unmaps.  This means that we can't
have scheduler code (or whatever) try to preempt its current pcore's
vcore and then try to give out that same vcore somewhere else without
take the stack-smashing __preempt message.  No one does this yet, since
our scheduler() only runs on LL cores.
kern/src/process.c