Fixes bug with ksched running while an SCP dies
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 1 May 2013 00:36:52 +0000 (17:36 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 3 May 2013 04:27:21 +0000 (21:27 -0700)
commite4df4aa9776b8cbfaa71d6fd9f05fb4b8f3bcd15
tree3741c42861338656e4925bde5c54b9959f24d2be
parent5ca822655e7077b34434776c709f3d4ed2f53b53
Fixes bug with ksched running while an SCP dies

The local SCP could be dying (via an exit(), for example), but before
the __death KMSG is sent, and IRQ triggers the ksched tick KMSG, which
will happen before __death.

Notice we can't send a __ksched_tick message, since that would rearm the
(probably) already armed alarm, using the same awaiter.  This would
result in a few problems, one of which was runaway __ksched_tick kmsgs
that exhaust the system's memory...

This is a little clunky, in that the ksched needs to deal with this.  An
alternative would be to make launching an SCP (proc_run_s()) operate
with RKMs, or make SCP death *not* use RKMs.
kern/src/schedule.c