~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/rcutree.h

Version: ~ [ linux-5.1.2 ] ~ [ linux-5.0.16 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.43 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.119 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.176 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.179 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.139 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.67 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.39.4 ] ~ [ linux-2.6.38.8 ] ~ [ linux-2.6.37.6 ] ~ [ linux-2.6.36.4 ] ~ [ linux-2.6.35.14 ] ~ [ linux-2.6.34.15 ] ~ [ linux-2.6.33.20 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * Read-Copy Update mechanism for mutual exclusion (tree-based version)
  3  *
  4  * This program is free software; you can redistribute it and/or modify
  5  * it under the terms of the GNU General Public License as published by
  6  * the Free Software Foundation; either version 2 of the License, or
  7  * (at your option) any later version.
  8  *
  9  * This program is distributed in the hope that it will be useful,
 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 12  * GNU General Public License for more details.
 13  *
 14  * You should have received a copy of the GNU General Public License
 15  * along with this program; if not, you can access it online at
 16  * http://www.gnu.org/licenses/gpl-2.0.html.
 17  *
 18  * Copyright IBM Corporation, 2008
 19  *
 20  * Author: Dipankar Sarma <dipankar@in.ibm.com>
 21  *         Paul E. McKenney <paulmck@linux.vnet.ibm.com> Hierarchical algorithm
 22  *
 23  * Based on the original work by Paul McKenney <paulmck@us.ibm.com>
 24  * and inputs from Rusty Russell, Andrea Arcangeli and Andi Kleen.
 25  *
 26  * For detailed explanation of Read-Copy Update mechanism see -
 27  *      Documentation/RCU
 28  */
 29 
 30 #ifndef __LINUX_RCUTREE_H
 31 #define __LINUX_RCUTREE_H
 32 
 33 void rcu_note_context_switch(void);
 34 int rcu_needs_cpu(u64 basem, u64 *nextevt);
 35 void rcu_cpu_stall_reset(void);
 36 
 37 /*
 38  * Note a virtualization-based context switch.  This is simply a
 39  * wrapper around rcu_note_context_switch(), which allows TINY_RCU
 40  * to save a few bytes. The caller must have disabled interrupts.
 41  */
 42 static inline void rcu_virt_note_context_switch(int cpu)
 43 {
 44         rcu_note_context_switch();
 45 }
 46 
 47 void synchronize_rcu_bh(void);
 48 void synchronize_sched_expedited(void);
 49 void synchronize_rcu_expedited(void);
 50 
 51 void kfree_call_rcu(struct rcu_head *head, rcu_callback_t func);
 52 
 53 /**
 54  * synchronize_rcu_bh_expedited - Brute-force RCU-bh grace period
 55  *
 56  * Wait for an RCU-bh grace period to elapse, but use a "big hammer"
 57  * approach to force the grace period to end quickly.  This consumes
 58  * significant time on all CPUs and is unfriendly to real-time workloads,
 59  * so is thus not recommended for any sort of common-case code.  In fact,
 60  * if you are using synchronize_rcu_bh_expedited() in a loop, please
 61  * restructure your code to batch your updates, and then use a single
 62  * synchronize_rcu_bh() instead.
 63  *
 64  * Note that it is illegal to call this function while holding any lock
 65  * that is acquired by a CPU-hotplug notifier.  And yes, it is also illegal
 66  * to call this function from a CPU-hotplug notifier.  Failing to observe
 67  * these restriction will result in deadlock.
 68  */
 69 static inline void synchronize_rcu_bh_expedited(void)
 70 {
 71         synchronize_sched_expedited();
 72 }
 73 
 74 void rcu_barrier(void);
 75 void rcu_barrier_bh(void);
 76 void rcu_barrier_sched(void);
 77 unsigned long get_state_synchronize_rcu(void);
 78 void cond_synchronize_rcu(unsigned long oldstate);
 79 unsigned long get_state_synchronize_sched(void);
 80 void cond_synchronize_sched(unsigned long oldstate);
 81 
 82 extern unsigned long rcutorture_testseq;
 83 extern unsigned long rcutorture_vernum;
 84 unsigned long rcu_batches_started(void);
 85 unsigned long rcu_batches_started_bh(void);
 86 unsigned long rcu_batches_started_sched(void);
 87 unsigned long rcu_batches_completed(void);
 88 unsigned long rcu_batches_completed_bh(void);
 89 unsigned long rcu_batches_completed_sched(void);
 90 unsigned long rcu_exp_batches_completed(void);
 91 unsigned long rcu_exp_batches_completed_sched(void);
 92 void show_rcu_gp_kthreads(void);
 93 
 94 void rcu_force_quiescent_state(void);
 95 void rcu_bh_force_quiescent_state(void);
 96 void rcu_sched_force_quiescent_state(void);
 97 
 98 void rcu_idle_enter(void);
 99 void rcu_idle_exit(void);
100 void rcu_irq_enter(void);
101 void rcu_irq_exit(void);
102 void rcu_irq_enter_irqson(void);
103 void rcu_irq_exit_irqson(void);
104 
105 void exit_rcu(void);
106 
107 void rcu_scheduler_starting(void);
108 extern int rcu_scheduler_active __read_mostly;
109 
110 bool rcu_is_watching(void);
111 
112 void rcu_all_qs(void);
113 
114 /* RCUtree hotplug events */
115 int rcutree_prepare_cpu(unsigned int cpu);
116 int rcutree_online_cpu(unsigned int cpu);
117 int rcutree_offline_cpu(unsigned int cpu);
118 int rcutree_dead_cpu(unsigned int cpu);
119 int rcutree_dying_cpu(unsigned int cpu);
120 
121 #endif /* __LINUX_RCUTREE_H */
122 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp