Fix for timerfd_create on older kernel revisions

BOOTTIME_ALARM and BOOTTIME were added to timerfd_create
in kernel version 3.11 and 3.15 respectively.
But for targets still on older kernel version we fallback on MONOTONIC.

CRs-Fixed: 897805

Change-Id: I47d9780d69ce5ee8c183c84baa93ea3c1a00db57
This commit is contained in:
Bhavna Sharma 2015-08-26 11:26:46 -07:00 committed by Vamana Murthi
parent 153ba77107
commit 62a30d2faa

View file

@ -103,7 +103,7 @@ class LocTimerContainer : public LocHeap {
// Poll task to provide epoll call and threading to poll.
static LocTimerPollTask* mPollTask;
// timer / alarm fd
const int mDevFd;
int mDevFd;
// ctor
LocTimerContainer(bool wakeOnExpire);
// dtor
@ -210,6 +210,13 @@ LocTimerPollTask* LocTimerContainer::mPollTask = NULL;
// HwTimer (alarm), when wakeOnExpire is false.
LocTimerContainer::LocTimerContainer(bool wakeOnExpire) :
mDevFd(timerfd_create(wakeOnExpire ? CLOCK_BOOTTIME_ALARM : CLOCK_BOOTTIME, 0)) {
if ((-1 == mDevFd) && (errno == EINVAL)) {
LOC_LOGW("%s: timerfd_create failure, fallback to CLOCK_MONOTONIC - %s",
__FUNCTION__, strerror(errno));
mDevFd = timerfd_create(CLOCK_MONOTONIC, 0);
}
if (-1 != mDevFd) {
// ensure we have the necessary resources created
LocTimerContainer::getPollTaskLocked();