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:
parent
153ba77107
commit
62a30d2faa
1 changed files with 8 additions and 1 deletions
|
@ -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();
|
||||
|
|
Loading…
Reference in a new issue