diff options
Diffstat (limited to 'kernel/rcutree_plugin.h')
| -rw-r--r-- | kernel/rcutree_plugin.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h index 57200fe96d0a..c0cb783aa16a 100644 --- a/kernel/rcutree_plugin.h +++ b/kernel/rcutree_plugin.h | |||
| @@ -410,6 +410,15 @@ static int rcu_preempt_needs_cpu(int cpu) | |||
| 410 | return !!per_cpu(rcu_preempt_data, cpu).nxtlist; | 410 | return !!per_cpu(rcu_preempt_data, cpu).nxtlist; |
| 411 | } | 411 | } |
| 412 | 412 | ||
| 413 | /** | ||
| 414 | * rcu_barrier - Wait until all in-flight call_rcu() callbacks complete. | ||
| 415 | */ | ||
| 416 | void rcu_barrier(void) | ||
| 417 | { | ||
| 418 | _rcu_barrier(&rcu_preempt_state, call_rcu); | ||
| 419 | } | ||
| 420 | EXPORT_SYMBOL_GPL(rcu_barrier); | ||
| 421 | |||
| 413 | /* | 422 | /* |
| 414 | * Initialize preemptable RCU's per-CPU data. | 423 | * Initialize preemptable RCU's per-CPU data. |
| 415 | */ | 424 | */ |
| @@ -419,6 +428,14 @@ static void __cpuinit rcu_preempt_init_percpu_data(int cpu) | |||
| 419 | } | 428 | } |
| 420 | 429 | ||
| 421 | /* | 430 | /* |
| 431 | * Move preemptable RCU's callbacks to ->orphan_cbs_list. | ||
| 432 | */ | ||
| 433 | static void rcu_preempt_send_cbs_to_orphanage(void) | ||
| 434 | { | ||
| 435 | rcu_send_cbs_to_orphanage(&rcu_preempt_state); | ||
| 436 | } | ||
| 437 | |||
| 438 | /* | ||
| 422 | * Initialize preemptable RCU's state structures. | 439 | * Initialize preemptable RCU's state structures. |
| 423 | */ | 440 | */ |
| 424 | static void __init __rcu_init_preempt(void) | 441 | static void __init __rcu_init_preempt(void) |
| @@ -564,6 +581,16 @@ static int rcu_preempt_needs_cpu(int cpu) | |||
| 564 | } | 581 | } |
| 565 | 582 | ||
| 566 | /* | 583 | /* |
| 584 | * Because preemptable RCU does not exist, rcu_barrier() is just | ||
| 585 | * another name for rcu_barrier_sched(). | ||
| 586 | */ | ||
| 587 | void rcu_barrier(void) | ||
| 588 | { | ||
| 589 | rcu_barrier_sched(); | ||
| 590 | } | ||
| 591 | EXPORT_SYMBOL_GPL(rcu_barrier); | ||
| 592 | |||
| 593 | /* | ||
| 567 | * Because preemptable RCU does not exist, there is no per-CPU | 594 | * Because preemptable RCU does not exist, there is no per-CPU |
| 568 | * data to initialize. | 595 | * data to initialize. |
| 569 | */ | 596 | */ |
| @@ -572,6 +599,13 @@ static void __cpuinit rcu_preempt_init_percpu_data(int cpu) | |||
| 572 | } | 599 | } |
| 573 | 600 | ||
| 574 | /* | 601 | /* |
| 602 | * Because there is no preemptable RCU, there are no callbacks to move. | ||
| 603 | */ | ||
| 604 | static void rcu_preempt_send_cbs_to_orphanage(void) | ||
| 605 | { | ||
| 606 | } | ||
| 607 | |||
| 608 | /* | ||
| 575 | * Because preemptable RCU does not exist, it need not be initialized. | 609 | * Because preemptable RCU does not exist, it need not be initialized. |
| 576 | */ | 610 | */ |
| 577 | static void __init __rcu_init_preempt(void) | 611 | static void __init __rcu_init_preempt(void) |
