Side note:

On Mon, Jun 6, 2016 at 2:28 AM, Masahiro Yamada
<[email protected]> wrote:
>
> -#define IS_REACHABLE(option) (config_enabled(option) || \
> -                (config_enabled(option##_MODULE) && config_enabled(MODULE)))
> +#define IS_REACHABLE(option) (IS_BUILTIN(option) || \
> +                (IS_MODULE(option) && config_enabled(MODULE)))

Is that "config_enabled(MODULE)" actually sensible?

The whole "config_enabled()" thing is designed for config options. But
"MODULE" is not a config option, it's per-file build option ("are we
now building for a module" vs "are we building built-in code").

The code clearly works, but it smells a bit confusing to me. Talking
about "config" of MODULE makes me think CONFIG_MODULES ("are modular
builds enabled") rather than "am I currently building a module".

I wonder if we should have something like

  #ifdef MODULE
   #define BUILDING_MODULES 1
  #else
   #define BUILDING_MODULES 0
  #endif

and then using (IS_MODULE(option) && BUILDING_MODULES) to clarify the test.

Because when I first looked at the patch and didn't think about it any
more, my initial reaction was "why is it checking whether modules are
enabled - if IS_MODULE() is true, then _obviously_ modules are
enabled?"

But maybe that's just me.

               Linus

Reply via email to