On Mon, Jan 16, 2017 at 11:25:38AM -0800, Josh Triplett wrote:
> On Mon, Jan 16, 2017 at 03:34:20AM -0800, Paul E. McKenney wrote:
> > On Sun, Jan 15, 2017 at 11:47:35PM -0800, Josh Triplett wrote:
> > > On Sat, Jan 14, 2017 at 12:54:42AM -0800, Paul E. McKenney wrote:

[ . . . ]

> > > > @@ -693,7 +752,7 @@ static void rcu_eqs_enter_common(long long oldval, 
> > > > bool user)
> > > >  {
> > > >         struct rcu_state *rsp;
> > > >         struct rcu_data *rdp;
> > > > -       struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
> > > > +       struct rcu_dynticks __maybe_unused *rdtp = 
> > > > this_cpu_ptr(&rcu_dynticks);
> > > 
> > > Rather than marking a local variable as __maybe_unused (such that the
> > > compiler can no longer help detect it as unused), could you move it into
> > > the portion of the function that uses it, so that if reached, it'll
> > > always get used?
> > > 
> > > >         trace_rcu_dyntick(TPS("Start"), oldval, rdtp->dynticks_nesting);
> > 
> > Its only use is in the above event trace, which can be disabled via
> > CONFIG_RCU_TRACE=n.  I could put the definition of rdtp under #ifdef,
> > but this seems ugly.  I could eliminate the variable, substituting
> > the initialization for rdtp in the event trace, but that would make
> > for a very long line, or an odd line break.
> 
> For the trace_rcu_dyntick calls, you could create a small static inline
> helper to do the tracing, eliminating the third argument.  Or you could
> create a helper that returns
> this_cpu_ptr(&rcu_dynticks)->dynticks_nesting.  Either way would work.
> 
> Or, if you prefer, you could wrap the variable
> declaration/initialization in RCU_TRACE() rather than adding
> __maybe_unused.

RCU_TRACE() it is in both cases, thank you!  (You would think I would
remember the code that I wrote...)

                                                        Thanx, Paul

Reply via email to