.clockid = CLOCK_TAI,
.get_time = &ktime_get_clocktai,
},
+ {
+ .index = HRTIMER_BASE_MONOTONIC_RAW,
+ .clockid = CLOCK_MONOTONIC_RAW,
+ .get_time = &ktime_get_raw,
+ },
}
};
static const int hrtimer_clock_to_base_table[MAX_CLOCKS] = {
[CLOCK_REALTIME] = HRTIMER_BASE_REALTIME,
[CLOCK_MONOTONIC] = HRTIMER_BASE_MONOTONIC,
+ [CLOCK_MONOTONIC_RAW] = HRTIMER_BASE_MONOTONIC_RAW,
[CLOCK_BOOTTIME] = HRTIMER_BASE_BOOTTIME,
[CLOCK_TAI] = HRTIMER_BASE_TAI,
};
if (!(active & 0x01))
continue;
- basenow = ktime_add(now, base->offset);
+ if (unlikely(base->index == HRTIMER_BASE_MONOTONIC_RAW))
+ basenow = ktime_get_raw();
+ else
+ basenow = ktime_add(now, base->offset);
while ((node = timerqueue_getnext(&base->active))) {
struct hrtimer *timer;