aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time/posix-timers.h
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2019-08-02 07:35:59 +0200
committerThomas Gleixner <tglx@linutronix.de>2019-08-20 22:05:46 +0200
commitec8f954a40da8cd3d159713b608e901f0cd909a9 (patch)
treea6099be5d308424ad07e3332f45cc3b757b28e90 /kernel/time/posix-timers.h
parent5d99b32a009e900a561f6a42ea7afe5b21288b8a (diff)
downloadlinux-ec8f954a40da8cd3d159713b608e901f0cd909a9.tar.gz
posix-timers: Use a callback for cancel synchronization on PREEMPT_RT
Posix timer delete retry loops are affected by the same priority inversion and live lock issues as the other timers. Provide a RT specific synchronization function which keeps a reference to the timer by holding rcu read lock to prevent the timer from being freed, dropping the timer lock and invoking the timer specific wait function via a new callback. This does not yet cover posix CPU timers because they need more special treatment on PREEMPT_RT. [ This is folded into the original attempt which did not use a callback. ] Originally-by: Anna-Maria Gleixenr <anna-maria@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Frederic Weisbecker <frederic@kernel.org> Link: https://lkml.kernel.org/r/20190819143801.656864506@linutronix.de
Diffstat (limited to 'kernel/time/posix-timers.h')
-rw-r--r--kernel/time/posix-timers.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/time/posix-timers.h b/kernel/time/posix-timers.h
index de5daa6d975af8..897c29e162b96b 100644
--- a/kernel/time/posix-timers.h
+++ b/kernel/time/posix-timers.h
@@ -24,6 +24,7 @@ struct k_clock {
int (*timer_try_to_cancel)(struct k_itimer *timr);
void (*timer_arm)(struct k_itimer *timr, ktime_t expires,
bool absolute, bool sigev_none);
+ void (*timer_wait_running)(struct k_itimer *timr);
};
extern const struct k_clock clock_posix_cpu;