linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Abuse of CONFIG_FOO's as feature selectors
@ 2015-04-22 18:20 Denys Vlasenko
  2015-04-22 18:56 ` Andreas Ruprecht
  2015-04-23 19:28 ` Paul Bolle
  0 siblings, 2 replies; 4+ messages in thread
From: Denys Vlasenko @ 2015-04-22 18:20 UTC (permalink / raw)
  To: LKML

Hi,

Kernel has a growing number of CONFIG items which are not
user-selectable features of their particular kernel builds,
but simply booleans controlled by other CONFIGs.
Example:

config X86
        def_bool y
        select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI
        select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
        select ARCH_HAS_FAST_MULTIPLIER
        select ARCH_HAS_GCOV_PROFILE_ALL
        select ARCH_MIGHT_HAVE_PC_PARPORT
        select ARCH_MIGHT_HAVE_PC_SERIO
        select HAVE_AOUT if X86_32
        select HAVE_UNSTABLE_SCHED_CLOCK
        select ARCH_SUPPORTS_NUMA_BALANCING if X86_64
        select ARCH_SUPPORTS_INT128 if X86_64
        select HAVE_IDE
        select HAVE_OPROFILE
        ...

I see how this practice originated: "select" statement
was initially added so that if feature X requires feature Y,
this can be enforced, but it was easy to use it to define
other booleans.

I have a feeling that in retrospect, it was a mistake.

It clutters .config with information which has nothing to do
with user's choice.

More importantly, now when you read some code, you don't know
whether a CONFIG_FOO you look at is user's configuration choice
or something else.

Now there are hundreds, maybe even thousands of these non-config
CONFIGs everywhere.


The same effect can be achieved, with marginally more typing,
with usual C defines in some header file:

#ifdef CONFIG_X86
# define ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
# define ARCH_HAS_FAST_MULTIPLIER
# define ARCH_HAS_GCOV_PROFILE_ALL
# define ARCH_MIGHT_HAVE_PC_PARPORT
# define ARCH_MIGHT_HAVE_PC_SERIO
...

Maybe we should stop doing the former and use the latter method?

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-04-23 19:28 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-22 18:20 Abuse of CONFIG_FOO's as feature selectors Denys Vlasenko
2015-04-22 18:56 ` Andreas Ruprecht
2015-04-23 12:11   ` Stefan Hengelein
2015-04-23 19:28 ` Paul Bolle

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