Use FD taps for event delivery for #alarm
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 11 Apr 2016 17:57:54 +0000 (13:57 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 15 Apr 2016 14:29:13 +0000 (10:29 -0400)
commit278b6158d6fdba2b6334cb0f9ebb9b304b94e9e8
treed56ce161f594e5f59c4fef69981d7756bfbad118
parent6f29809fa7053bdd6324393e8909be2ee972e6b6
Use FD taps for event delivery for #alarm

It turns out that FD taps work for #alarm, and they do a better job than
the old ev_q.  Now the user can tell us what it wants to hear for a
particular tap (e.g. the alarmid) instead of the kernel having to imply
that.  Plus, now we use just the one mechanism for asking the kernel to
send to an event when something happens (FD tap).

This required a few changes to userspace.  The subtlest is that
devalarm_set_evq takes timerfd instead of ctlfd.  That's actually a sign
that the API might be too coupled to the implementation.  The nicer
cleanups in userspace are:

- tests/alarm.c and PVC alarms use the devalarm interfaces (those functions
  predated that interface)
- devalarm provides a way to extract the ID, instead of functions checking
  ev_msg->ev_arg2

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/drivers/dev/alarm.c
kern/include/devalarm.h
tests/alarm.c
tests/evq_block.c
user/benchutil/alarm.c
user/benchutil/include/benchutil/alarm.h
user/benchutil/pvcalarm.c