Currently, mcfg completion function exists in two independent implementations doing the same thing, which is bug prone. Unify the two functions and move them into one place.
Signed-off-by: Anatoly Burakov <anatoly.bura...@intel.com> --- lib/librte_eal/common/eal_common_mcfg.c | 14 ++++++++++++++ lib/librte_eal/common/eal_memcfg.h | 4 ++++ lib/librte_eal/freebsd/eal/eal.c | 12 +----------- lib/librte_eal/linux/eal/eal.c | 12 +----------- 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/lib/librte_eal/common/eal_common_mcfg.c b/lib/librte_eal/common/eal_common_mcfg.c index 30969c6bf..dc6665d6a 100644 --- a/lib/librte_eal/common/eal_common_mcfg.c +++ b/lib/librte_eal/common/eal_common_mcfg.c @@ -5,8 +5,22 @@ #include <rte_config.h> #include <rte_eal_memconfig.h> +#include "eal_internal_cfg.h" #include "eal_memcfg.h" +void +eal_mcfg_complete(void) +{ + struct rte_config *cfg = rte_eal_get_configuration(); + struct rte_mem_config *mcfg = cfg->mem_config; + + /* ALL shared mem_config related INIT DONE */ + if (cfg->process_type == RTE_PROC_PRIMARY) + mcfg->magic = RTE_MAGIC; + + internal_config.init_complete = 1; +} + void eal_mcfg_wait_complete(void) { diff --git a/lib/librte_eal/common/eal_memcfg.h b/lib/librte_eal/common/eal_memcfg.h index 7319d9f7a..a2434417e 100644 --- a/lib/librte_eal/common/eal_memcfg.h +++ b/lib/librte_eal/common/eal_memcfg.h @@ -72,4 +72,8 @@ struct rte_mem_config { void eal_mcfg_wait_complete(void); +/* set mem config as complete */ +void +eal_mcfg_complete(void); + #endif /* EAL_MEMCFG_H */ diff --git a/lib/librte_eal/freebsd/eal/eal.c b/lib/librte_eal/freebsd/eal/eal.c index c102847d1..13e230fc8 100644 --- a/lib/librte_eal/freebsd/eal/eal.c +++ b/lib/librte_eal/freebsd/eal/eal.c @@ -632,16 +632,6 @@ sync_func(__attribute__((unused)) void *arg) return 0; } -inline static void -rte_eal_mcfg_complete(void) -{ - /* ALL shared mem_config related INIT DONE */ - if (rte_config.process_type == RTE_PROC_PRIMARY) - rte_config.mem_config->magic = RTE_MAGIC; - - internal_config.init_complete = 1; -} - /* return non-zero if hugepages are enabled. */ int rte_eal_has_hugepages(void) { @@ -921,7 +911,7 @@ rte_eal_init(int argc, char **argv) return -1; } - rte_eal_mcfg_complete(); + eal_mcfg_complete(); /* Call each registered callback, if enabled */ rte_option_init(); diff --git a/lib/librte_eal/linux/eal/eal.c b/lib/librte_eal/linux/eal/eal.c index 6a06628b1..4fd18b15f 100644 --- a/lib/librte_eal/linux/eal/eal.c +++ b/lib/librte_eal/linux/eal/eal.c @@ -933,16 +933,6 @@ sync_func(__attribute__((unused)) void *arg) return 0; } -inline static void -rte_eal_mcfg_complete(void) -{ - /* ALL shared mem_config related INIT DONE */ - if (rte_config.process_type == RTE_PROC_PRIMARY) - rte_config.mem_config->magic = RTE_MAGIC; - - internal_config.init_complete = 1; -} - /* * Request iopl privilege for all RPL, returns 0 on success * iopl() call is mostly for the i386 architecture. For other architectures, @@ -1268,7 +1258,7 @@ rte_eal_init(int argc, char **argv) return -1; } - rte_eal_mcfg_complete(); + eal_mcfg_complete(); /* Call each registered callback, if enabled */ rte_option_init(); -- 2.17.1