Sorted some races with proc IPIs, poorly.
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 20 Aug 2009 22:13:25 +0000 (15:13 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 31 Aug 2009 21:07:54 +0000 (14:07 -0700)
commit9a615d37603d93029848407b8f3fffffda354889
treefb6fb2ed4d47fbdcbed7833394e8dbc67b8e6a29
parentdc5b07dda51faa2a80fe0e7393e15e5e25553df3
Sorted some races with proc IPIs, poorly.

In general, sending IPIs and having separate IPIs for startcore, death,
and preempt just sucks on x86.  Next commit will replace all the TODO:
(AM) with some x86 active messaging support, so we can be guaranteed
in-order receipt of messages sent in-order.

Also, here's the deal with the vcoremap:
- the vcoremap is the list of cores allocated to a process,  regardless
  of whether or not it is running there yet (or still).
- you can only mess with a process's vcoremap when you hold its lock.
- you can only mess with a core (send it a proc_mgmt IPI/AM) when you hold
  the lock of the process that has its vcoremapping.
kern/arch/i386/process.c
kern/arch/i386/trap.h
kern/include/smp.h
kern/src/env.c
kern/src/manager.c
kern/src/process.c
user/apps/roslib/mhello.c