diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2019-08-02 08:35:59 +0300 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2019-08-20 23:05:46 +0300 |
commit | ec8f954a40da8cd3d159713b608e901f0cd909a9 (patch) | |
tree | a6099be5d308424ad07e3332f45cc3b757b28e90 /kernel/time/posix-timers.h | |
parent | 5d99b32a009e900a561f6a42ea7afe5b21288b8a (diff) | |
download | linux-ec8f954a40da8cd3d159713b608e901f0cd909a9.tar.xz |
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; |