From: Josh Triplett <josh@joshtriplett.org>
To: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Cc: linux-kernel@vger.kernel.org, mingo@elte.hu,
laijs@cn.fujitsu.com, dipankar@in.ibm.com,
akpm@linux-foundation.org, mathieu.desnoyers@polymtl.ca,
niv@us.ibm.com, tglx@linutronix.de, peterz@infradead.org,
rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com,
darren@dvhart.com, fweisbec@gmail.com, sbw@mit.edu
Subject: Re: [PATCH tip/core/rcu 4/9] nohz_full: Add rcu_dyntick data for scalable detection of all-idle state
Date: Sun, 18 Aug 2013 18:34:53 -0700 [thread overview]
Message-ID: <20130819013453.GA10868@leaf> (raw)
In-Reply-To: <20130819012229.GZ29406@linux.vnet.ibm.com>
On Sun, Aug 18, 2013 at 06:22:29PM -0700, Paul E. McKenney wrote:
> On Sat, Aug 17, 2013 at 08:02:34PM -0700, Josh Triplett wrote:
> > On Sat, Aug 17, 2013 at 06:49:39PM -0700, Paul E. McKenney wrote:
> > > +#ifdef CONFIG_NO_HZ_FULL_SYSIDLE
> > > +
> > > +/*
> > > + * Initialize dynticks sysidle state for CPUs coming online.
> > > + */
> > > +static void rcu_sysidle_init_percpu_data(struct rcu_dynticks *rdtp)
> > > +{
> > > + rdtp->dynticks_idle_nesting = DYNTICK_TASK_NEST_VALUE;
> > > +}
> > > +
> > > +#else /* #ifdef CONFIG_NO_HZ_FULL_SYSIDLE */
> > > +
> > > +static void rcu_sysidle_init_percpu_data(struct rcu_dynticks *rdtp)
> > > +{
> > > +}
> > > +
> > > +#endif /* #else #ifdef CONFIG_NO_HZ_FULL_SYSIDLE */
> >
> > Just move the ifdef around the function body:
> >
> > static void rcu_sysidle_init_percpu_data(struct rcu_dynticks *rdtp)
> > {
> > #ifdef CONFIG_NO_HZ_FULL_SYSIDLE
> > rdtp->dynticks_idle_nesting = DYNTICK_TASK_NEST_VALUE;
> > #endif /* CONFIG_NO_HZ_FULL_SYSIDLE */
> > }
>
> This makes sense for this isolated function, and it would also
> make sense if the end result had only functions that were exported.
> But if I try to apply this to the result, I will end up with something
> like the following. Is that really what you want?
>
> I suppose I could individually enclose whole functions whose definitions
> are unneeded for CONFIG_NO_HZ_FULL_SYSIDLE=n, but that doesn't seem
> helpful either.
>
> Thoughts?
I see what you mean. Short of sorting the functions to put all the
unexported ones together, which seems suboptimal, I don't see an obvious
fix. The result you posted isn't *terrible*, but it's not great either.
I had mostly hoped to avoid having two duplicate function headers that
would then both need changing whenever changing the function signature,
and which could then potentially get out of sync without causing a
compilation error.
I'd say that if you have a single-function block like the one above, you
should use the ifdef-body approach, but if you've got a group of
functions that don't all use one or the other approach, go ahead and
wrap the whole thing in one big ifdef rather than one per function.
Use whichever approach seems most sensible on a case-by-case basis; your
call. Feel free to add a
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
to whichever approach you go with.
- Josh Triplett
next prev parent reply other threads:[~2013-08-19 1:35 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-18 1:49 [PATCH tip/core/rcu 0/9] sysidle changes for v3.12 Paul E. McKenney
2013-08-18 1:49 ` [PATCH tip/core/rcu 1/9] rcu: Eliminate unused APIs intended for adaptive ticks Paul E. McKenney
2013-08-18 1:49 ` [PATCH tip/core/rcu 2/9] nohz_full: Add testing information to documentation Paul E. McKenney
2013-08-18 1:49 ` [PATCH tip/core/rcu 3/9] nohz_full: Add Kconfig parameter for scalable detection of all-idle state Paul E. McKenney
2013-08-18 1:49 ` [PATCH tip/core/rcu 4/9] nohz_full: Add rcu_dyntick data " Paul E. McKenney
2013-08-18 3:02 ` Josh Triplett
2013-08-19 1:22 ` Paul E. McKenney
2013-08-19 1:34 ` Josh Triplett [this message]
2013-08-18 1:49 ` [PATCH tip/core/rcu 5/9] nohz_full: Add per-CPU idle-state tracking Paul E. McKenney
2013-08-18 3:04 ` Josh Triplett
2013-08-18 1:49 ` [PATCH tip/core/rcu 6/9] nohz_full: Add full-system idle states and variables Paul E. McKenney
2013-08-18 3:09 ` Josh Triplett
2013-08-19 1:39 ` Paul E. McKenney
2013-08-19 2:49 ` Josh Triplett
2013-08-19 3:32 ` Paul E. McKenney
2013-08-18 1:49 ` [PATCH tip/core/rcu 7/9] nohz_full: Add full-system-idle arguments to API Paul E. McKenney
2013-08-18 3:11 ` Josh Triplett
2013-08-19 1:50 ` Paul E. McKenney
2013-08-18 1:49 ` [PATCH tip/core/rcu 8/9] nohz_full: Add full-system-idle state machine Paul E. McKenney
2013-08-18 1:49 ` [PATCH tip/core/rcu 9/9] nohz_full: Force RCU's grace-period kthreads onto timekeeping CPU Paul E. McKenney
2013-08-18 3:13 ` [PATCH tip/core/rcu 0/9] sysidle changes for v3.12 Josh Triplett
-- strict thread matches above, loose matches on Subject: below --
2013-08-20 2:47 [PATCH tip/core/rcu 0/9] v2 sysidle changes for 3.12 Paul E. McKenney
2013-08-20 2:47 ` [PATCH tip/core/rcu 1/9] rcu: Eliminate unused APIs intended for adaptive ticks Paul E. McKenney
2013-08-20 2:47 ` [PATCH tip/core/rcu 4/9] nohz_full: Add rcu_dyntick data for scalable detection of all-idle state Paul E. McKenney
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130819013453.GA10868@leaf \
--to=josh@joshtriplett.org \
--cc=akpm@linux-foundation.org \
--cc=darren@dvhart.com \
--cc=dhowells@redhat.com \
--cc=dipankar@in.ibm.com \
--cc=edumazet@google.com \
--cc=fweisbec@gmail.com \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mingo@elte.hu \
--cc=niv@us.ibm.com \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=sbw@mit.edu \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).