diff options
Diffstat (limited to 'kernel/rcutree.h')
| -rw-r--r-- | kernel/rcutree.h | 12 | 
1 files changed, 10 insertions, 2 deletions
diff --git a/kernel/rcutree.h b/kernel/rcutree.h index 7af39f4aaac..e51373c0b74 100644 --- a/kernel/rcutree.h +++ b/kernel/rcutree.h @@ -196,6 +196,12 @@ struct rcu_node {  				/* Refused to boost: not sure why, though. */  				/*  This can happen due to race conditions. */  #endif /* #ifdef CONFIG_RCU_BOOST */ +#ifdef CONFIG_RCU_NOCB_CPU +	wait_queue_head_t nocb_gp_wq[2]; +				/* Place for rcu_nocb_kthread() to wait GP. */ +	int n_nocb_gp_requests[2]; +				/* Counts of upcoming no-CB GP requests. */ +#endif /* #ifdef CONFIG_RCU_NOCB_CPU */  	raw_spinlock_t fqslock ____cacheline_internodealigned_in_smp;  } ____cacheline_internodealigned_in_smp; @@ -326,7 +332,6 @@ struct rcu_data {  	int nocb_p_count_lazy;		/*  (approximate). */  	wait_queue_head_t nocb_wq;	/* For nocb kthreads to sleep on. */  	struct task_struct *nocb_kthread; -	bool nocb_needs_gp;  #endif /* #ifdef CONFIG_RCU_NOCB_CPU */  	int cpu; @@ -524,7 +529,10 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu);  static void print_cpu_stall_info_end(void);  static void zero_cpu_stall_ticks(struct rcu_data *rdp);  static void increment_cpu_stall_ticks(void); -static int rcu_nocb_needs_gp(struct rcu_data *rdp); +static int rcu_nocb_needs_gp(struct rcu_state *rsp); +static void rcu_nocb_gp_set(struct rcu_node *rnp, int nrq); +static int rcu_nocb_gp_cleanup(struct rcu_state *rsp, struct rcu_node *rnp); +static void rcu_init_one_nocb(struct rcu_node *rnp);  static bool is_nocb_cpu(int cpu);  static bool __call_rcu_nocb(struct rcu_data *rdp, struct rcu_head *rhp,  			    bool lazy);  |