smp_call wait / backend work
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 27 Apr 2009 01:06:55 +0000 (18:06 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 27 Apr 2009 01:06:55 +0000 (18:06 -0700)
commit38a6f8e203502447b134a53dd981d035f53c4ecd
tree8f851d1dd300f5fe248e1c0e4179af06003cf261
parent9cd0b846940088282355d04150fa6319fc00b428
smp_call wait / backend work

Fixes the problem mentioned in the previous commit, where you would
deadlock if you tried to use the same wrapper you were currently waiting
on.  There is still the possibility of deadlocking by holding too many
waits and then not being able to find a free handler, (get stuck in the
while loop).

Also, the backend is looking rather redundant with the front end.  Might
be time to get rid of the front end, and have the only toggling happen
on the backend of running the handler.  It'd mean we can't reuse the
vector until everyone is complete, not just everyone knows what function
to run.  But we can't reliably wait without that.  The other way would
be to have the backend list be on the caller's stack, so there's no
chance of clobbering.
kern/atomic.c
kern/atomic.h
kern/init.c
kern/smp.c
kern/testing.c