diff options
| -rw-r--r-- | include/linux/rcutree.h | 6 | ||||
| -rw-r--r-- | kernel/rcutree_plugin.h | 21 |
2 files changed, 22 insertions, 5 deletions
diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h index 46e9ab3ee6e1..9642c6bcb399 100644 --- a/include/linux/rcutree.h +++ b/include/linux/rcutree.h | |||
| @@ -76,11 +76,7 @@ static inline void __rcu_read_unlock_bh(void) | |||
| 76 | 76 | ||
| 77 | extern void call_rcu_sched(struct rcu_head *head, | 77 | extern void call_rcu_sched(struct rcu_head *head, |
| 78 | void (*func)(struct rcu_head *rcu)); | 78 | void (*func)(struct rcu_head *rcu)); |
| 79 | 79 | extern void synchronize_rcu_expedited(void); | |
| 80 | static inline void synchronize_rcu_expedited(void) | ||
| 81 | { | ||
| 82 | synchronize_sched_expedited(); | ||
| 83 | } | ||
| 84 | 80 | ||
| 85 | static inline void synchronize_rcu_bh_expedited(void) | 81 | static inline void synchronize_rcu_bh_expedited(void) |
| 86 | { | 82 | { |
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h index c0cb783aa16a..ebd20ee7707d 100644 --- a/kernel/rcutree_plugin.h +++ b/kernel/rcutree_plugin.h | |||
| @@ -393,6 +393,17 @@ void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) | |||
| 393 | EXPORT_SYMBOL_GPL(call_rcu); | 393 | EXPORT_SYMBOL_GPL(call_rcu); |
| 394 | 394 | ||
| 395 | /* | 395 | /* |
| 396 | * Wait for an rcu-preempt grace period. We are supposed to expedite the | ||
| 397 | * grace period, but this is the crude slow compatability hack, so just | ||
| 398 | * invoke synchronize_rcu(). | ||
| 399 | */ | ||
| 400 | void synchronize_rcu_expedited(void) | ||
| 401 | { | ||
| 402 | synchronize_rcu(); | ||
| 403 | } | ||
| 404 | EXPORT_SYMBOL_GPL(synchronize_rcu_expedited); | ||
| 405 | |||
| 406 | /* | ||
| 396 | * Check to see if there is any immediate preemptable-RCU-related work | 407 | * Check to see if there is any immediate preemptable-RCU-related work |
| 397 | * to be done. | 408 | * to be done. |
| 398 | */ | 409 | */ |
| @@ -565,6 +576,16 @@ void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) | |||
| 565 | EXPORT_SYMBOL_GPL(call_rcu); | 576 | EXPORT_SYMBOL_GPL(call_rcu); |
| 566 | 577 | ||
| 567 | /* | 578 | /* |
| 579 | * Wait for an rcu-preempt grace period, but make it happen quickly. | ||
| 580 | * But because preemptable RCU does not exist, map to rcu-sched. | ||
| 581 | */ | ||
| 582 | void synchronize_rcu_expedited(void) | ||
| 583 | { | ||
| 584 | synchronize_sched_expedited(); | ||
| 585 | } | ||
| 586 | EXPORT_SYMBOL_GPL(synchronize_rcu_expedited); | ||
| 587 | |||
| 588 | /* | ||
| 568 | * Because preemptable RCU does not exist, it never has any work to do. | 589 | * Because preemptable RCU does not exist, it never has any work to do. |
| 569 | */ | 590 | */ |
| 570 | static int rcu_preempt_pending(int cpu) | 591 | static int rcu_preempt_pending(int cpu) |
