diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2019-08-02 07:35:59 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2019-08-20 22:05:46 +0200 |
commit | ec8f954a40da8cd3d159713b608e901f0cd909a9 (patch) | |
tree | a6099be5d308424ad07e3332f45cc3b757b28e90 /kernel/time/posix-timers.h | |
parent | 5d99b32a009e900a561f6a42ea7afe5b21288b8a (diff) | |
download | linux-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.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/time/posix-timers.h b/kernel/time/posix-timers.h index de5daa6d975a..897c29e162b9 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; |