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

Yann E. MORIN
2013-09-07T09:13:54Z

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.

> 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<---

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! ;-)

Regards,
Yann E. MORIN.

--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'