Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
rcutree.h
Go to the documentation of this file.
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, write to the Free Software
16
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
*
18
* Copyright IBM Corporation, 2008
19
*
20
* Author: Dipankar Sarma <
[email protected]
>
21
* Paul E. McKenney <
[email protected]
> Hierarchical algorithm
22
*
23
* Based on the original work by Paul McKenney <
[email protected]
>
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
extern
void
rcu_init
(
void
);
34
extern
void
rcu_note_context_switch
(
int
cpu
);
35
extern
int
rcu_needs_cpu
(
int
cpu
,
unsigned
long
*delta_jiffies);
36
extern
void
rcu_cpu_stall_reset
(
void
);
37
38
/*
39
* Note a virtualization-based context switch. This is simply a
40
* wrapper around rcu_note_context_switch(), which allows TINY_RCU
41
* to save a few bytes.
42
*/
43
static
inline
void
rcu_virt_note_context_switch(
int
cpu
)
44
{
45
rcu_note_context_switch
(cpu);
46
}
47
48
extern
void
synchronize_rcu_bh
(
void
);
49
extern
void
synchronize_sched_expedited
(
void
);
50
extern
void
synchronize_rcu_expedited
(
void
);
51
52
void
kfree_call_rcu
(
struct
rcu_head
*
head
,
void
(*
func
)(
struct
rcu_head
*rcu));
53
70
static
inline
void
synchronize_rcu_bh_expedited(
void
)
71
{
72
synchronize_sched_expedited
();
73
}
74
75
extern
void
rcu_barrier
(
void
);
76
extern
void
rcu_barrier_bh
(
void
);
77
extern
void
rcu_barrier_sched
(
void
);
78
79
extern
unsigned
long
rcutorture_testseq
;
80
extern
unsigned
long
rcutorture_vernum
;
81
extern
long
rcu_batches_completed
(
void
);
82
extern
long
rcu_batches_completed_bh
(
void
);
83
extern
long
rcu_batches_completed_sched
(
void
);
84
85
extern
void
rcu_force_quiescent_state
(
void
);
86
extern
void
rcu_bh_force_quiescent_state
(
void
);
87
extern
void
rcu_sched_force_quiescent_state
(
void
);
88
89
extern
void
rcu_scheduler_starting
(
void
);
90
extern
int
rcu_scheduler_active
__read_mostly
;
91
92
#endif
/* __LINUX_RCUTREE_H */
Generated on Thu Jan 10 2013 14:52:27 for Linux Kernel by
1.8.2