__core_request no longer locks and calls proc code
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 10 May 2012 02:18:26 +0000 (19:18 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 5 Sep 2012 21:43:57 +0000 (14:43 -0700)
commitfe0226d75bd969cc39acf846b2a7b96a1616d71e
tree1dfdb736936a05159c8694ff0fa2466a2ba7ef16
parent5909cdd49a760dadd60758f3b2247a4e98b59c2f
__core_request no longer locks and calls proc code

Part of a move to make the ksched lock not lock-ordered before the proc
lock.

__core_req needs to be careful about how things change when it unlocks.
for instance, there might be callbacks for cores yielding or procs
dying, or someone might have called provision_core().  I think I've
covered the cases, but it's a bit fragile.

Also note that I'm relying on __core_req being called once at a time
only (specifically, that there are no other preemptors or allocators).
The poke_tracker gives me that.  (That, and that __core_req is only
called from within the poke).
kern/include/schedule.h
kern/src/schedule.c