diff options
Diffstat (limited to 'include/linux/rcupdate.h')
-rw-r--r-- | include/linux/rcupdate.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index a67d5f1072ea..6df0ae197810 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
@@ -381,8 +381,22 @@ extern int rcu_my_thread_group_empty(void); | |||
381 | } \ | 381 | } \ |
382 | } while (0) | 382 | } while (0) |
383 | 383 | ||
384 | #if defined(CONFIG_PROVE_RCU) && !defined(CONFIG_PREEMPT_RCU) | ||
385 | static inline void rcu_preempt_sleep_check(void) | ||
386 | { | ||
387 | rcu_lockdep_assert(!lock_is_held(&rcu_lock_map), | ||
388 | "Illegal context switch in RCU read-side " | ||
389 | "critical section"); | ||
390 | } | ||
391 | #else /* #ifdef CONFIG_PROVE_RCU */ | ||
392 | static inline void rcu_preempt_sleep_check(void) | ||
393 | { | ||
394 | } | ||
395 | #endif /* #else #ifdef CONFIG_PROVE_RCU */ | ||
396 | |||
384 | #define rcu_sleep_check() \ | 397 | #define rcu_sleep_check() \ |
385 | do { \ | 398 | do { \ |
399 | rcu_preempt_sleep_check(); \ | ||
386 | rcu_lockdep_assert(!lock_is_held(&rcu_bh_lock_map), \ | 400 | rcu_lockdep_assert(!lock_is_held(&rcu_bh_lock_map), \ |
387 | "Illegal context switch in RCU-bh" \ | 401 | "Illegal context switch in RCU-bh" \ |
388 | " read-side critical section"); \ | 402 | " read-side critical section"); \ |