mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
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@suse.com> Reviewed-by: Julien Grall <jgrall@amazon.com>
This commit is contained in:
1 parent
137c08aa07
commit
5e600b4fb9
2 files changed
+16
-5
No files matched your search
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||