summaryrefslogtreecommitdiffstats
path: root/kernel/time/posix-timers.c
diff options
context:
space:
mode:
authorThomas Gleixner2017-05-30 23:15:47 +0200
committerThomas Gleixner2017-06-04 15:40:26 +0200
commitf37fb0aa4f453c7c785bbcecc4991ac48c5c0e51 (patch)
tree9ccf6bc401b55ac4d01e66a980491ee3f10b5d81 /kernel/time/posix-timers.c
parentposix-timers: Rename do_schedule_next_timer (diff)
downloadkernel-qcow2-linux-f37fb0aa4f453c7c785bbcecc4991ac48c5c0e51.tar.gz
kernel-qcow2-linux-f37fb0aa4f453c7c785bbcecc4991ac48c5c0e51.tar.xz
kernel-qcow2-linux-f37fb0aa4f453c7c785bbcecc4991ac48c5c0e51.zip
posix-timers: Use timer_rearm() callback in posixtimer_rearm()
Use the new timer_rearm() callback to replace the conditional hardcoded calls into the hrtimer and cpu timer code. This allows later to bring the same logic to alarmtimers. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: John Stultz <john.stultz@linaro.org> Link: http://lkml.kernel.org/r/20170530211656.889661919@linutronix.de
Diffstat (limited to 'kernel/time/posix-timers.c')
-rw-r--r--kernel/time/posix-timers.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/kernel/time/posix-timers.c b/kernel/time/posix-timers.c
index 036b7e70c65c..b12582a4b122 100644
--- a/kernel/time/posix-timers.c
+++ b/kernel/time/posix-timers.c
@@ -278,10 +278,9 @@ static __init int init_posix_timers(void)
NULL);
return 0;
}
-
__initcall(init_posix_timers);
-static void schedule_next_timer(struct k_itimer *timr)
+static void common_hrtimer_rearm(struct k_itimer *timr)
{
struct hrtimer *timer = &timr->it.real.timer;
@@ -315,10 +314,7 @@ void posixtimer_rearm(struct siginfo *info)
return;
if (timr->it_requeue_pending == info->si_sys_private) {
- if (timr->it_clock < 0)
- posix_cpu_timer_schedule(timr);
- else
- schedule_next_timer(timr);
+ timr->kclock->timer_rearm(timr);
timr->it_overrun_last = timr->it_overrun;
timr->it_overrun = -1;
@@ -1046,6 +1042,7 @@ static const struct k_clock clock_realtime = {
.timer_set = common_timer_set,
.timer_get = common_timer_get,
.timer_del = common_timer_del,
+ .timer_rearm = common_hrtimer_rearm,
};
static const struct k_clock clock_monotonic = {
@@ -1057,6 +1054,7 @@ static const struct k_clock clock_monotonic = {
.timer_set = common_timer_set,
.timer_get = common_timer_get,
.timer_del = common_timer_del,
+ .timer_rearm = common_hrtimer_rearm,
};
static const struct k_clock clock_monotonic_raw = {
@@ -1083,6 +1081,7 @@ static const struct k_clock clock_tai = {
.timer_set = common_timer_set,
.timer_get = common_timer_get,
.timer_del = common_timer_del,
+ .timer_rearm = common_hrtimer_rearm,
};
static const struct k_clock clock_boottime = {
@@ -1094,6 +1093,7 @@ static const struct k_clock clock_boottime = {
.timer_set = common_timer_set,
.timer_get = common_timer_get,
.timer_del = common_timer_del,
+ .timer_rearm = common_hrtimer_rearm,
};
static const struct k_clock * const posix_clocks[] = {