handle_events() unconditionally
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 10 Oct 2014 18:38:43 +0000 (11:38 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 13 Oct 2014 19:47:54 +0000 (12:47 -0700)
commit195ce0e3f0456721b1df70ce4101ec11270e4a0e
tree6a0f428c626caa5299f40d828df73c9943b1522d
parent8d0489905904ca8dfb1359f285afe2be37e12607
handle_events() unconditionally

If we condition on notif_pending and we don't drain the event queue
completely (due to a handler not returning perhaps), then the next time
we try to handle_events, we would have bailed out - even if the mboxes
weren't empty.

Another concern is that if we handle_events, clear notif_pending, and
then we run a handler that doesn't return, that we someone slip out of
vcore context in the future without checking messages.  Any case
involving a handler that doesn't return should result in a fresh vcore
context starting up, which checks events.  This means that event
handlers cannot pop directly into uthreads.  ev_might_not_return() won't
help you with that, since it covers cases where we handle another vcores
mbox, not our own mbox.
user/parlib/event.c