
two questions.
first, was perusing include/image.h, familiar with snippets like this:
#define IMAGE_ENABLE_FIT CONFIG_IS_ENABLED(FIT) #define IMAGE_ENABLE_OF_LIBFDT CONFIG_IS_ENABLED(OF_LIBFDT)
but further down the same file, seems like more content could be rewritten that way:
#ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH # define IMAGE_ENABLE_RAMDISK_HIGH 1 #else # define IMAGE_ENABLE_RAMDISK_HIGH 0 #endif
#ifdef CONFIG_SYS_BOOT_GET_CMDLINE # define IMAGE_BOOT_GET_CMDLINE 1 #else # define IMAGE_BOOT_GET_CMDLINE 0 #endif
... etc etc ...
isn't that amenable to the same rewriting?
and, second, from include/linux/kconfig.h, what is the difference between IS_ENABLED() and CONFIG_IS_ENABLED():
/* * IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm', * 0 otherwise. * */ #define IS_ENABLED(option) \ (config_enabled(option) || config_enabled(option##_MODULE))
... snip ...
/* * CONFIG_IS_ENABLED(FOO) evaluates to * 1 if CONFIG_SPL_BUILD is undefined and CONFIG_FOO is set to 'y' or 'm', * 1 if CONFIG_SPL_BUILD is defined and CONFIG_SPL_FOO is set to 'y' or 'm', * 0 otherwise. */ #define CONFIG_IS_ENABLED(option) \ (config_enabled(CONFIG_VAL(option)) || \ config_enabled(CONFIG_VAL(option##_MODULE)))
i'm sure if i kept reading, i'd understand the difference, but the comment above that second #define doesn't seem to clarify it, since it refers to "CONFIG_SPL_*" while the definition mentions nothing about SPL. perhaps a more expansive comment would make things clearer in terms of where to use one rather than the other.
rday
p.s. there is some potentially confusing usage of that macro, like this within the same source file drivers/core/device.c:
$ grep -r IS_ENABLED drivers/core/device.c if (CONFIG_IS_ENABLED(OF_CONTROL) && CONFIG_IS_ENABLED(DM_SEQ_ALIAS)) { if (CONFIG_IS_ENABLED(DM_DEVICE_REMOVE)) { if (CONFIG_IS_ENABLED(DM_DEVICE_REMOVE)) { if (CONFIG_IS_ENABLED(DM_DEVICE_REMOVE)) { #if CONFIG_IS_ENABLED(OF_CONTROL) if (CONFIG_IS_ENABLED(OF_TRANSLATE)) { if (CONFIG_IS_ENABLED(SIMPLE_BUS) && addr != FDT_ADDR_T_NONE) { #if CONFIG_IS_ENABLED(OF_CONTROL) $
so within the same source file, CONFIG_IS_ENABLED() is being used for both compile-time *and* run-time testing. um, yuck. IMHO, the compile-time testing should use the standard test of:
#ifdef CONFIG_OF_CONTROL
for consistency. it just seems messy to be bouncing back and forth between the two usages.
rday