lkml.org 
[lkml]   [2008]   [May]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: kernel coding style for if ... else which cross #ifdef
Sam Ravnborg wrote:
> On Fri, May 23, 2008 at 10:42:58PM -0700, H. Peter Anvin wrote:
>
>> Sam Ravnborg wrote:
>>
>>>> *However*, the best would really be if we changed Kconfig to emit
>>>> configuration constants what were 0/1 instead of undefined/defined.
>>>> That way we could do:
>>>>
>>>> if (CONFIG_SOMETHING && foo) {
>>>> /* ... something ... */
>>>> } else if ((mode & S_IWUGO) == 0) {
>>>> /* ... */
>>>>
>>> We could do that - but then it would need another
>>> name not to clash with all the places where we rely
>>> on CONFIG_FOO='n' => CONFIG_FOO is not defined.
>>>
>>> We could teach kconfig to emit something like:
>>> #define KFOO 0 (for the 'n' value)
>>> And 1 or 2 for the y and m values.
>>>
>>>
>> I don't think we want to use "1 or 2"... I suspect we want to use the
>> same booleans we currently have.
>>
> I'm a bit dense (or I need more coffe - it's morning here).
> What "same booleans"?
>

They should be plain 0/1 booleans. For a bool/tristate option FOO, it
would define:

Enabled y:

#define CONFIG_FOO
#define CFG_FOO 1
#undef CONFIG_FOO_MODULE
#define CFG_FOO_MODULE 0


Enabled m:

#define CONFIG_FOO
#define CFG_FOO 1
#define CONFIG_FOO_MODULE
#define CFG_FOO_MODULE 1


Disabled n:

#undef CONFIG_FOO
#define CFG_FOO 0
#undef CONFIG_FOO_MODULE
#define CFG_FOO_MODULE 0

Not sure what CFG_* should be for string/numeric options. Probably "1"
if the value is defined, "0" if not, with CONFIG_* being the actual
value (so a CONFIG_ value of 0 is distinguishable from not defined).

J


\
 
 \ /
  Last update: 2008-05-24 12:09    [W:0.486 / U:0.088 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site