Event delivery to _S procs
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 15 Mar 2012 02:59:15 +0000 (19:59 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 15 Mar 2012 02:59:15 +0000 (19:59 -0700)
commit14f47b0f67c99077d00d4d1a348eee1c63c2dfe1
tree9faf6c7f0a506c9a9df2044384cbf49f0b83cb9d
parentf188983041cc181a9c47ee90ad7d11b582ac4f9d
Event delivery to _S procs

If an _S registers an ev_q, the kernel event delivery system will send
events to the process.  Events will go to vcore0's public mbox,
regardless of ev_flags, so long as the proc is an _S.  Processes can set
up ev_qs for whatever they want later, and then when they are MCPs, the
flags will kick in (and you don't have to change things).  That is how
processes should set up ev_qs for POSIX signals.

The code can also handle the process being descheduled, and the _S will
pop into vcore context when it starts up (if it wasn't already in vcore
context when it was stopped).

Receiving an event also should wake an _S, rescheduling it, though that
hasn't been tested yet (_Ss don't WAIT yet).
kern/src/event.c
kern/src/process.c
kern/src/schedule.c