Re: [PATCH tip/core/rcu 8/9] nohz_full: Add full-system-idle state machine

Paul E. McKenney
2013-09-07T18:57:28Z

On Sat, Sep 07, 2013 at 11:13:48AM +0200, Yann E. MORIN wrote:
> Paul, All,
>
> On 2013-09-06 10:30 -0700, Paul E. McKenney spake thusly:
> [--SNIP--]
> > I also tried using Kconfig "if":
> >
> > if SMP
> > config NR_CPUS_REALLY
> > int "Fixed version of NR_CPUS"
> > default NR_CPUS
> > endif
> > if !SMP
> > config NR_CPUS_REALLY
> > int "Fixed version of NR_CPUS"
> > default 1 if !SMP
>
> The 'if !SMP' here is unneeded, you're already in a 'if !SMP' if-block.

Agreed, though I get the same result even without the !SMP.

> > endif
> >
> > However, Kconfig complained about the use of NR_CPUS even though this
> > was under an "if" whose condition was not set. Perhaps someone with
> > better Kconfig-fu than I have can come up with something.
>
> That's because the 'if' condition is added to the dependency list of the
> symbol(s) that is(are) enclosed in the if.
>
> 'if' in Kconfig behaves the same way as an 'if' in C. What you expected
> (I believe) was the behaviour of '#ifdef', which is not the case. From
> Documentation/kbuild/kconfig-language.txt:
>
> ---8<---
> if:
>
> "if" <expr>
> <if block>
> "endif"
>
> This defines an if block. The dependency expression <expr> is appended
> to all enclosed menu entries.
> ---8<---

OK, I did read this, but misunderstood it.

> There's no equivlaent to '#ifdef' in Kconfig.
>
> I'll see if I can come up with a meaningfull construct that fixes your
> use-case. Don't hold your breath, though! ;-)

If not, we need to add NR_CPUS to the architectures lacking them...

Thanx, Paul