diff options
Diffstat (limited to 'kernel/rcutree.h')
-rw-r--r-- | kernel/rcutree.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/rcutree.h b/kernel/rcutree.h index 0024e5ddcc68..ca560364d8cd 100644 --- a/kernel/rcutree.h +++ b/kernel/rcutree.h | |||
@@ -80,6 +80,7 @@ struct rcu_dynticks { | |||
80 | */ | 80 | */ |
81 | struct rcu_node { | 81 | struct rcu_node { |
82 | spinlock_t lock; | 82 | spinlock_t lock; |
83 | long gpnum; /* Current grace period for this node. */ | ||
83 | unsigned long qsmask; /* CPUs or groups that need to switch in */ | 84 | unsigned long qsmask; /* CPUs or groups that need to switch in */ |
84 | /* order for current grace period to proceed.*/ | 85 | /* order for current grace period to proceed.*/ |
85 | unsigned long qsmaskinit; | 86 | unsigned long qsmaskinit; |
@@ -90,6 +91,8 @@ struct rcu_node { | |||
90 | u8 grpnum; /* CPU/group number for next level up. */ | 91 | u8 grpnum; /* CPU/group number for next level up. */ |
91 | u8 level; /* root is at level 0. */ | 92 | u8 level; /* root is at level 0. */ |
92 | struct rcu_node *parent; | 93 | struct rcu_node *parent; |
94 | struct list_head blocked_tasks[2]; | ||
95 | /* Tasks blocked in RCU read-side critsect. */ | ||
93 | } ____cacheline_internodealigned_in_smp; | 96 | } ____cacheline_internodealigned_in_smp; |
94 | 97 | ||
95 | /* Index values for nxttail array in struct rcu_data. */ | 98 | /* Index values for nxttail array in struct rcu_data. */ |
@@ -111,6 +114,7 @@ struct rcu_data { | |||
111 | bool passed_quiesc; /* User-mode/idle loop etc. */ | 114 | bool passed_quiesc; /* User-mode/idle loop etc. */ |
112 | bool qs_pending; /* Core waits for quiesc state. */ | 115 | bool qs_pending; /* Core waits for quiesc state. */ |
113 | bool beenonline; /* CPU online at least once. */ | 116 | bool beenonline; /* CPU online at least once. */ |
117 | bool preemptable; /* Preemptable RCU? */ | ||
114 | struct rcu_node *mynode; /* This CPU's leaf of hierarchy */ | 118 | struct rcu_node *mynode; /* This CPU's leaf of hierarchy */ |
115 | unsigned long grpmask; /* Mask to apply to leaf qsmask. */ | 119 | unsigned long grpmask; /* Mask to apply to leaf qsmask. */ |
116 | 120 | ||
@@ -244,5 +248,10 @@ DECLARE_PER_CPU(struct rcu_data, rcu_sched_data); | |||
244 | extern struct rcu_state rcu_bh_state; | 248 | extern struct rcu_state rcu_bh_state; |
245 | DECLARE_PER_CPU(struct rcu_data, rcu_bh_data); | 249 | DECLARE_PER_CPU(struct rcu_data, rcu_bh_data); |
246 | 250 | ||
251 | #ifdef CONFIG_TREE_PREEMPT_RCU | ||
252 | extern struct rcu_state rcu_preempt_state; | ||
253 | DECLARE_PER_CPU(struct rcu_data, rcu_preempt_data); | ||
254 | #endif /* #ifdef CONFIG_TREE_PREEMPT_RCU */ | ||
255 | |||
247 | #endif /* #ifdef RCU_TREE_NONCORE */ | 256 | #endif /* #ifdef RCU_TREE_NONCORE */ |
248 | 257 | ||