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) |