|
@@ -136,6 +136,7 @@ static inline int rcu_read_lock_bh_held(void)
|
|
|
* can prove otherwise. Note that disabling of preemption (including
|
|
|
* disabling irqs) counts as an RCU-sched read-side critical section.
|
|
|
*/
|
|
|
+#ifdef CONFIG_PREEMPT
|
|
|
static inline int rcu_read_lock_sched_held(void)
|
|
|
{
|
|
|
int lockdep_opinion = 0;
|
|
@@ -144,6 +145,12 @@ static inline int rcu_read_lock_sched_held(void)
|
|
|
lockdep_opinion = lock_is_held(&rcu_sched_lock_map);
|
|
|
return lockdep_opinion || preempt_count() != 0 || !rcu_scheduler_active;
|
|
|
}
|
|
|
+#else /* #ifdef CONFIG_PREEMPT */
|
|
|
+static inline int rcu_read_lock_sched_held(void)
|
|
|
+{
|
|
|
+ return 1;
|
|
|
+}
|
|
|
+#endif /* #else #ifdef CONFIG_PREEMPT */
|
|
|
|
|
|
#else /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */
|
|
|
|
|
@@ -164,10 +171,17 @@ static inline int rcu_read_lock_bh_held(void)
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_PREEMPT
|
|
|
static inline int rcu_read_lock_sched_held(void)
|
|
|
{
|
|
|
return preempt_count() != 0 || !rcu_scheduler_active;
|
|
|
}
|
|
|
+#else /* #ifdef CONFIG_PREEMPT */
|
|
|
+static inline int rcu_read_lock_sched_held(void)
|
|
|
+{
|
|
|
+ return 1;
|
|
|
+}
|
|
|
+#endif /* #else #ifdef CONFIG_PREEMPT */
|
|
|
|
|
|
#endif /* #else #ifdef CONFIG_DEBUG_LOCK_ALLOC */
|
|
|
|