From 2f529f9b558ca1c1bd74be7437a84e4711743404 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Fri, 01 Nov 2024 02:11:33 +0000 Subject: [PATCH] add xenomai --- kernel/include/linux/rcupdate.h | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) diff --git a/kernel/include/linux/rcupdate.h b/kernel/include/linux/rcupdate.h index 095b3b3..a4388ef 100644 --- a/kernel/include/linux/rcupdate.h +++ b/kernel/include/linux/rcupdate.h @@ -118,6 +118,14 @@ static inline void rcu_nocb_flush_deferred_wakeup(void) { } #endif /* #else #ifdef CONFIG_RCU_NOCB_CPU */ +#ifdef CONFIG_IRQ_PIPELINE +void rcu_oob_prepare_lock(void); +void rcu_oob_finish_lock(void); +#else +#define rcu_oob_prepare_lock() do { } while (0) +#define rcu_oob_finish_lock() do { } while (0) +#endif + /** * RCU_NONIDLE - Indicate idle-loop code that needs RCU readers * @a: Code that RCU needs to pay attention to. @@ -290,7 +298,7 @@ static inline int rcu_read_lock_sched_held(void) { - return !preemptible(); + return !running_inband() || !preemptible(); } static inline int rcu_read_lock_any_held(void) @@ -646,6 +654,7 @@ */ static __always_inline void rcu_read_lock(void) { + rcu_oob_prepare_lock(); __rcu_read_lock(); __acquire(RCU); rcu_lock_acquire(&rcu_lock_map); @@ -702,6 +711,7 @@ "rcu_read_unlock() used illegally while idle"); __release(RCU); __rcu_read_unlock(); + rcu_oob_finish_lock(); rcu_lock_release(&rcu_lock_map); /* Keep acq info for rls diags. */ } @@ -755,6 +765,7 @@ static inline void rcu_read_lock_sched(void) { preempt_disable(); + rcu_oob_prepare_lock(); __acquire(RCU_SCHED); rcu_lock_acquire(&rcu_sched_lock_map); RCU_LOCKDEP_WARN(!rcu_is_watching(), @@ -779,6 +790,7 @@ "rcu_read_unlock_sched() used illegally while idle"); rcu_lock_release(&rcu_sched_lock_map); __release(RCU_SCHED); + rcu_oob_finish_lock(); preempt_enable(); } -- Gitblit v1.6.2