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

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

Version: ~ [ linux-4.14 ] ~ [ linux-4.13.12 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.61 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.97 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.46 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.80 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.50 ] ~ [ 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.95 ] ~ [ 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.27.62 ] ~ [ 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(bool preempt);
 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(false);
 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 void rcu_idle_enter(void);
 83 void rcu_idle_exit(void);
 84 void rcu_irq_enter(void);
 85 void rcu_irq_exit(void);
 86 void rcu_irq_enter_irqson(void);
 87 void rcu_irq_exit_irqson(void);
 88 bool rcu_irq_enter_disabled(void);
 89 
 90 void exit_rcu(void);
 91 
 92 void rcu_scheduler_starting(void);
 93 extern int rcu_scheduler_active __read_mostly;
 94 void rcu_end_inkernel_boot(void);
 95 bool rcu_is_watching(void);
 96 void rcu_all_qs(void);
 97 
 98 /* RCUtree hotplug events */
 99 int rcutree_prepare_cpu(unsigned int cpu);
100 int rcutree_online_cpu(unsigned int cpu);
101 int rcutree_offline_cpu(unsigned int cpu);
102 int rcutree_dead_cpu(unsigned int cpu);
103 int rcutree_dying_cpu(unsigned int cpu);
104 
105 #endif /* __LINUX_RCUTREE_H */
106 

~ [ 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