a lot of unused CONFIG_*
Hi.
# wc -l CONFIG_defined_but_not_used CONFIG_not_defined_but_used
116 CONFIG_defined_but_not_used
635 CONFIG_not_defined_but_usedThis is a lot!
I didn't strip out "*_MODULE" (don't know if they're automagicaly generated and it doesn't make much difference).
So... am I wrong about my script, or do we have A LOT of work to do?
Any suggestions, how to fix this? (grepping for every symbol, and replacing it takes too much time).
Upper 2 files were generated from following commands in bash. Sorry, not very readable, i know.
# these executed on kernel source # find files that use *CONFIG_* find | egrep '\.[chS]$' | xargs egrep 'CONFIG_[A-Z0-9a-z]*' | sed 's/.*CONFIG_/CONFIG_/g' | sed 's/[^A-Z0-9a-z_].*//' | sort | uniq | tee ../CONFIGs_in_source
# find CONFIG_* that are defined in Kconfig files find | grep Kconfig | xargs egrep '^config.*[A-Z0-9a-z_]+$' | sed 's/.*config[^A-Z0-9a-z_]*/CONFIG_/g' | sort | uniq | tee ../config
# find *CONFIG_* defined in sources find | egrep '\.[chS]$' | xargs egrep '#define.*CONFIG' | sed 's/.*CONFIG_/CONFIG_/g' | sed 's/[^A-Z0-9a-z_].*//' | sort | uniq | tee ../CONFIGs_defined
# these on ".." relative to kernel source # used (or defined) in sources, but not defined in Kconfig diff CONFIGs_in_source config | egrep '^<' | cut -f2 -d\ > CONFIGs_not_in_config
# filename says it all diff CONFIGs_not_in_config CONFIGs_defined | grep '<' | cut -f2 -d\ > CONFIG_not_defined_but_used
# see filename diff CONFIGs_not_in_config CONFIGs_defined | grep '>' | cut -f2 -d\ > CONFIG_defined_but_not_used
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
Quoted 10 lines · Domen Puncer
Hi.
# wc -l CONFIG_defined_but_not_used CONFIG_not_defined_but_used 116 CONFIG_defined_but_not_used 635 CONFIG_not_defined_but_usedThis is a lot!
I didn't strip out "
*_MODULE" (don't know if they're automagicaly generated and it doesn't make much difference).
These symbols are automatically generated when configuring a variable to be modular.
Quoted 2 lines
So... am I wrong about my script, or do we have A LOT of work to do?
...
It's sometimes used and 100% correct to define options that are only used in the Kconfig file they are defined in.
Examples are some cpu variables in from arch/i386/Kconfig .
It often occurs that a variable is only used in a Makefile to select a subdirectory (e.g. CONFIG_E1000), but your scripts didn't count this use.
Not all Kconfig files are named Kconfig, Kconfig\* is a better expression.
Not all things your script output are really bugs, e.g. there might be an #ifdef CONFIG_FOO in the code without CONFIG_FOO being defined anywhere, but it's defined in another tree (e.g. an architecture tree) that will be resynced with the kernel soon.
cu
Adrian
Signature · 9 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitorsOn Sun, 18 Jan 2004 13:53:22 +0100 Adrian Bunk <[email protected]> wrote:
| On Sat, Jan 17, 2004 at 05:04:40PM +0100, Domen Puncer wrote: | > Hi. | > | > # wc -l CONFIG_defined_but_not_used CONFIG_not_defined_but_used | > 116 CONFIG_defined_but_not_used | > 635 CONFIG_not_defined_but_used | > | > This is a lot! | > | > I didn't strip out "*_MODULE" (don't know if they're automagicaly | > generated and it doesn't make much difference). | | These symbols are automatically generated when configuring a variable to | be modular. | | > So... am I wrong about my script, or do we have A LOT of work to do? | >... | | It's sometimes used and 100% correct to define options that are only | used in the Kconfig file they are defined in. | Examples are some cpu variables in from arch/i386/Kconfig . | | It often occurs that a variable is only used in a Makefile to select a | subdirectory (e.g. CONFIG_E1000), but your scripts didn't count this | use. | | Not all Kconfig files are named Kconfig, Kconfig\* is a better | expression. | | Not all things your script output are really bugs, e.g. there might be | an #ifdef CONFIG_FOO in the code without CONFIG_FOO being defined | anywhere, but it's defined in another tree (e.g. an architecture tree) | that will be resynced with the kernel soon.
Summary: the script is too (mechanical|simple).
It may be used for hints/help.
Take them on a case-by-case basis.
--
~Randy
Everything is relative.
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors