From: Anatoly Burakov Date: Fri, 5 Jul 2019 13:10:34 +0000 (+0100) Subject: eal: unify internal config init X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=b39fcd956969e9fcf7033dcbd2a7c05deeaa7010;p=dpdk.git eal: unify internal config init Currently, each EAL will update internal/shared config in their own way at init, resulting in needless duplication of code and OS-dependent behavior. Move the functions to a common file and add missing FreeBSD steps. Signed-off-by: Anatoly Burakov Acked-by: Stephen Hemminger Acked-by: David Marchand --- diff --git a/lib/librte_eal/common/eal_common_mcfg.c b/lib/librte_eal/common/eal_common_mcfg.c index dc6665d6a3..fe8d2b7268 100644 --- a/lib/librte_eal/common/eal_common_mcfg.c +++ b/lib/librte_eal/common/eal_common_mcfg.c @@ -31,6 +31,24 @@ eal_mcfg_wait_complete(void) rte_pause(); } +void +eal_mcfg_update_internal(void) +{ + struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config; + + internal_config.legacy_mem = mcfg->legacy_mem; + internal_config.single_file_segments = mcfg->single_file_segments; +} + +void +eal_mcfg_update_from_internal(void) +{ + struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config; + + mcfg->legacy_mem = internal_config.legacy_mem; + mcfg->single_file_segments = internal_config.single_file_segments; +} + void rte_mcfg_mem_read_lock(void) { diff --git a/lib/librte_eal/common/eal_memcfg.h b/lib/librte_eal/common/eal_memcfg.h index 417324aabf..573233896e 100644 --- a/lib/librte_eal/common/eal_memcfg.h +++ b/lib/librte_eal/common/eal_memcfg.h @@ -69,6 +69,14 @@ struct rte_mem_config { uint8_t dma_maskbits; /**< Keeps the more restricted dma mask. */ }; +/* update internal config from shared mem config */ +void +eal_mcfg_update_internal(void); + +/* update shared mem config from internal config */ +void +eal_mcfg_update_from_internal(void); + /* wait until primary process initialization is complete */ void eal_mcfg_wait_complete(void); diff --git a/lib/librte_eal/freebsd/eal/eal.c b/lib/librte_eal/freebsd/eal/eal.c index 4f07c240ef..3bd1a04f73 100644 --- a/lib/librte_eal/freebsd/eal/eal.c +++ b/lib/librte_eal/freebsd/eal/eal.c @@ -379,6 +379,7 @@ rte_config_init(void) case RTE_PROC_PRIMARY: if (rte_eal_config_create() < 0) return -1; + eal_mcfg_update_from_internal(); break; case RTE_PROC_SECONDARY: if (rte_eal_config_attach() < 0) @@ -386,6 +387,7 @@ rte_config_init(void) eal_mcfg_wait_complete(); if (rte_eal_config_reattach() < 0) return -1; + eal_mcfg_update_internal(); break; case RTE_PROC_AUTO: case RTE_PROC_INVALID: diff --git a/lib/librte_eal/linux/eal/eal.c b/lib/librte_eal/linux/eal/eal.c index ec1cc82e1a..f7cb90a41b 100644 --- a/lib/librte_eal/linux/eal/eal.c +++ b/lib/librte_eal/linux/eal/eal.c @@ -473,24 +473,6 @@ eal_proc_type_detect(void) return ptype; } -/* copies data from internal config to shared config */ -static void -eal_update_mem_config(void) -{ - struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config; - mcfg->legacy_mem = internal_config.legacy_mem; - mcfg->single_file_segments = internal_config.single_file_segments; -} - -/* copies data from shared config to internal config */ -static void -eal_update_internal_config(void) -{ - struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config; - internal_config.legacy_mem = mcfg->legacy_mem; - internal_config.single_file_segments = mcfg->single_file_segments; -} - /* Sets up rte_config structure with the pointer to shared memory config.*/ static int rte_config_init(void) @@ -501,7 +483,7 @@ rte_config_init(void) case RTE_PROC_PRIMARY: if (rte_eal_config_create() < 0) return -1; - eal_update_mem_config(); + eal_mcfg_update_from_internal(); break; case RTE_PROC_SECONDARY: if (rte_eal_config_attach() < 0) @@ -509,7 +491,7 @@ rte_config_init(void) eal_mcfg_wait_complete(); if (rte_eal_config_reattach() < 0) return -1; - eal_update_internal_config(); + eal_mcfg_update_internal(); break; case RTE_PROC_AUTO: case RTE_PROC_INVALID: