diff options
-rw-r--r-- | include/linux/rcupdate.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 24b896649384..d7af96ef6fcf 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
@@ -458,7 +458,20 @@ extern int rcu_my_thread_group_empty(void); | |||
458 | * will be deferred until the outermost RCU read-side critical section | 458 | * will be deferred until the outermost RCU read-side critical section |
459 | * completes. | 459 | * completes. |
460 | * | 460 | * |
461 | * It is illegal to block while in an RCU read-side critical section. | 461 | * You can avoid reading and understanding the next paragraph by |
462 | * following this rule: don't put anything in an rcu_read_lock() RCU | ||
463 | * read-side critical section that would block in a !PREEMPT kernel. | ||
464 | * But if you want the full story, read on! | ||
465 | * | ||
466 | * In non-preemptible RCU implementations (TREE_RCU and TINY_RCU), it | ||
467 | * is illegal to block while in an RCU read-side critical section. In | ||
468 | * preemptible RCU implementations (TREE_PREEMPT_RCU and TINY_PREEMPT_RCU) | ||
469 | * in CONFIG_PREEMPT kernel builds, RCU read-side critical sections may | ||
470 | * be preempted, but explicit blocking is illegal. Finally, in preemptible | ||
471 | * RCU implementations in real-time (CONFIG_PREEMPT_RT) kernel builds, | ||
472 | * RCU read-side critical sections may be preempted and they may also | ||
473 | * block, but only when acquiring spinlocks that are subject to priority | ||
474 | * inheritance. | ||
462 | */ | 475 | */ |
463 | static inline void rcu_read_lock(void) | 476 | static inline void rcu_read_lock(void) |
464 | { | 477 | { |