[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v3] NUMA: limit first_valid_mfn exposure
Address the TODO regarding first_valid_mfn by making the variable static when NUMA=y, thus also addressing a Misra C:2012 rule 8.4 concern (on x86). To carry this out, introduce two new IS_ENABLED()-like macros conditionally inserting "static". One less macro expansion layer is sufficient though (I might guess that some early form of IS_ENABLED() pasted CONFIG_ onto the incoming argument, at which point the extra layer would have been necessary), and part of the existing helper macros can be re-used. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> --- v3: Introduce STATIC_IF{,_NOT}(). v2: New, split off. --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -255,12 +255,10 @@ static PAGE_LIST_HEAD(page_broken_list); */ /* - * first_valid_mfn is exported because it is used when !CONFIG_NUMA. - * - * TODO: Consider if we can conditionally export first_valid_mfn based - * on whether NUMA is selected. + * When !CONFIG_NUMA first_valid_mfn is non-static, for use by respective + * stubs. */ -mfn_t first_valid_mfn = INVALID_MFN_INITIALIZER; +STATIC_IF(CONFIG_NUMA) mfn_t first_valid_mfn = INVALID_MFN_INITIALIZER; struct bootmem_region { unsigned long s, e; /* MFNs @s through @e-1 inclusive are free */ --- a/xen/include/xen/kconfig.h +++ b/xen/include/xen/kconfig.h @@ -11,6 +11,8 @@ /* cppcheck is failing to parse the macro so use a dummy one */ #ifdef CPPCHECK #define IS_ENABLED(option) option +#define STATIC_IF(option) option +#define STATIC_IF_NOT(option) option #else /* * Getting something that works in C and CPP for an arg that may or may @@ -31,6 +33,17 @@ * otherwise. */ #define IS_ENABLED(option) config_enabled(option) + +/* Use similar trickery for conditionally inserting "static". */ +#define static_if(value) _static_if(__ARG_PLACEHOLDER_##value) +#define _static_if(arg1_or_junk) ___config_enabled(arg1_or_junk static,) + +#define STATIC_IF(option) static_if(option) + +#define static_if_not(value) _static_if_not(__ARG_PLACEHOLDER_##value) +#define _static_if_not(arg1_or_junk) ___config_enabled(arg1_or_junk, static) + +#define STATIC_IF_NOT(option) static_if_not(option) #endif #endif /* __XEN_KCONFIG_H */
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |