diff options
Diffstat (limited to 'kernel/srcu.c')
| -rw-r--r-- | kernel/srcu.c | 16 | 
1 files changed, 11 insertions, 5 deletions
diff --git a/kernel/srcu.c b/kernel/srcu.c index 97c465ebd84..2b859828cdc 100644 --- a/kernel/srcu.c +++ b/kernel/srcu.c @@ -16,8 +16,10 @@   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.   *   * Copyright (C) IBM Corporation, 2006 + * Copyright (C) Fujitsu, 2012   *   * Author: Paul McKenney <paulmck@us.ibm.com> + *	   Lai Jiangshan <laijs@cn.fujitsu.com>   *   * For detailed explanation of Read-Copy Update mechanism see -   * 		Documentation/RCU/ *.txt @@ -34,6 +36,10 @@  #include <linux/delay.h>  #include <linux/srcu.h> +#include <trace/events/rcu.h> + +#include "rcu.h" +  /*   * Initialize an rcu_batch structure to empty.   */ @@ -92,9 +98,6 @@ static inline void rcu_batch_move(struct rcu_batch *to, struct rcu_batch *from)  	}  } -/* single-thread state-machine */ -static void process_srcu(struct work_struct *work); -  static int init_srcu_struct_fields(struct srcu_struct *sp)  {  	sp->completed = 0; @@ -464,7 +467,9 @@ static void __synchronize_srcu(struct srcu_struct *sp, int trycount)   */  void synchronize_srcu(struct srcu_struct *sp)  { -	__synchronize_srcu(sp, SYNCHRONIZE_SRCU_TRYCOUNT); +	__synchronize_srcu(sp, rcu_expedited +			   ? SYNCHRONIZE_SRCU_EXP_TRYCOUNT +			   : SYNCHRONIZE_SRCU_TRYCOUNT);  }  EXPORT_SYMBOL_GPL(synchronize_srcu); @@ -637,7 +642,7 @@ static void srcu_reschedule(struct srcu_struct *sp)  /*   * This is the work-queue function that handles SRCU grace periods.   */ -static void process_srcu(struct work_struct *work) +void process_srcu(struct work_struct *work)  {  	struct srcu_struct *sp; @@ -648,3 +653,4 @@ static void process_srcu(struct work_struct *work)  	srcu_invoke_callbacks(sp);  	srcu_reschedule(sp);  } +EXPORT_SYMBOL_GPL(process_srcu);  |