Hi. On Thu, Apr 16, 2009 at 06:28:12PM -0700, Paul E. McKenney (paulmck@xxxxxxxxxxxxxxxxxx) wrote: > +/* Single bit for grace-period index, low-order bits are nesting counter. */ > +#define RCU_FGP_COUNT 1UL > +#define RCU_FGP_PARITY (1UL << (sizeof(long) << 2)) > +#define RCU_FGP_NEST_MASK (RCU_FGP_PARITY - 1) > + > +extern long rcu_fgp_ctr; > +DECLARE_PER_CPU(long, rcu_fgp_active_readers); > + > +static inline void rcu_read_lock_fgp(void) > +{ > + long tmp; > + long *uarp; > + > + preempt_disable(); > + uarp = &__get_cpu_var(rcu_fgp_active_readers); > + tmp = *uarp; > + if (likely(!(tmp & RCU_FGP_NEST_MASK))) > + *uarp = rcu_fgp_ctr; /* Outermost rcu_read_lock(). */ > + else > + *uarp = tmp + RCU_FGP_COUNT; /* Nested rcu_read_lock(). */ > + barrier(); > +} > + > +static inline void rcu_read_unlock_fgp(void) > +{ > + barrier(); > + __get_cpu_var(rcu_fgp_active_readers)--; Shouldn't it be rcu_fgp_active_readers - RCU_FGP_COUNT? Although it is 1 by definition, it is more clear when understanding what's going on here. -- Evgeniy Polyakov -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html