notif_pending short circuits handle_events()
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 8 Jan 2013 01:14:40 +0000 (17:14 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 8 Jan 2013 01:55:24 +0000 (17:55 -0800)
commitc75906f9d868a80e5d0e29b420bcb8f768f0b4b9
tree196a17e9efd61c9f8cd9a3de13023918d88c5303
parente6bebbfeca0b1d737fe112785d47b6a9d78abccf
notif_pending short circuits handle_events()

The kernel always sets notif_pending after posting to a VC mbox, so we
can use this check to avoid checking the full mbox (UCQs and other
stuff).

This also cleans up a couple things and removes clear_notif_pending(),
which was doing basically what the new handle_events does.  Also,
clear_notif had a bug in it, where it would never return TRUE.

Finally, note that it is only required to have one handle_events() call
when we're in VC context.  Right now we have one in uth_vc_entry and
another in the 2LS (in pth's loop).  Due to how the pth code is set up,
we need the uth one at least (in case we immediately call run_cur_uth).

We also have a few 'optimization' locations when leaving VC ctx (either
by cur_uth or by yielding/idling).

Slimming these down yielded a couple ns on the pth_test benchmark, so we
might go with that in the future.
tests/eth_audio.c
tests/msr_get_cores.c
tests/msr_get_singlecore.c
user/parlib/event.c
user/parlib/include/vcore.h
user/parlib/uthread.c
user/parlib/vcore.c