a1d6f92f34
On devices without /dev/alarm, use a new backend based on timerfd. timerfd has near-equivalent syscalls for the /dev/alarm ioctls we care about, with two key differences: 1) /dev/alarm uses one fd for all clocks, while timerfd needs one fd per clock type. AlarmManagerService addresses this by replacing the fd (int) with an opaque pointer (long) to the backend-specific state. 2) When the RTC changes, the /dev/alarm WAIT ioctl always returns, while timerfd cancels (and signals events) only on specially-flagged RTC timerfds. The timerfd backend masks this by creating an extraneous RTC timerfd, specifically so there's always something to signal on RTC changes. Change-Id: I5aef867748298610347f6e1479dd8bf569495832 Signed-off-by: Greg Hackmann <ghackmann@google.com>