On Tue, Jun 9, 2020 at 12:32 PM <tal...@mellanox.com> wrote: > > From: Tal Shnaiderman <tal...@mellanox.com> > > Move common functions between Unix and Windows to eal_common_config.c. > > Those simple functions are getter functions for IOVA, > configuration, Multi-process. > > Move rte_config and runtime_dir to be defined in a common file. > > Signed-off-by: Tal Shnaiderman <tal...@mellanox.com> > --- > lib/librte_eal/common/eal_common_config.c | 39 > +++++++++++++++++++++++++++++++ > lib/librte_eal/common/eal_private.h | 12 ++++++++++ > lib/librte_eal/common/meson.build | 2 ++ > lib/librte_eal/freebsd/Makefile | 1 + > lib/librte_eal/freebsd/eal.c | 36 ---------------------------- > lib/librte_eal/linux/Makefile | 1 + > lib/librte_eal/linux/eal.c | 36 ---------------------------- > lib/librte_eal/windows/eal.c | 36 ---------------------------- > 8 files changed, 55 insertions(+), 108 deletions(-) > create mode 100644 lib/librte_eal/common/eal_common_config.c > > diff --git a/lib/librte_eal/common/eal_common_config.c > b/lib/librte_eal/common/eal_common_config.c > new file mode 100644 > index 0000000000..641c7d884c > --- /dev/null > +++ b/lib/librte_eal/common/eal_common_config.c > @@ -0,0 +1,39 @@ > +/* SPDX-License-Identifier: BSD-3-Clause > + * Copyright(c) 2020 Mellanox Technologies, Ltd > + */ > +#include <eal_private.h> > + > +#include <rte_os.h>
Usually EAL public headers are included first, then local headers after. > + > +struct rte_mem_config early_mem_config; We lost the comment on why this was needed. This is used as a temp storage before mapping to a shared space. The code that was relying on this symbol should stop doing it and start using the getter on rte_config. This symbol can then be hidden in this code unit. > + > +char runtime_dir[PATH_MAX]; > + > +struct rte_config rte_config = { static, we have getters. > + .mem_config = &early_mem_config, Single indent is enough. > +}; > + > +const char * > +rte_eal_get_runtime_dir(void) > +{ > + return runtime_dir; > +} > + > +/* Return a pointer to the configuration structure */ > +struct rte_config * > +rte_eal_get_configuration(void) > +{ > + return &rte_config; > +} > + > +enum rte_iova_mode > +rte_eal_iova_mode(void) > +{ > + return rte_eal_get_configuration()->iova_mode; > +} > + > +enum rte_proc_type_t > +rte_eal_process_type(void) > +{ > + return rte_config.process_type; > +} > diff --git a/lib/librte_eal/common/eal_private.h > b/lib/librte_eal/common/eal_private.h > index 2a780f5138..61bcba81b7 100644 > --- a/lib/librte_eal/common/eal_private.h > +++ b/lib/librte_eal/common/eal_private.h > @@ -13,6 +13,8 @@ > #include <rte_lcore.h> > #include <rte_memory.h> > > +#include <eal_memcfg.h> No reason to include this here once we remove the symbol exports. > + > #include "eal_internal_cfg.h" > > /** > @@ -36,6 +38,13 @@ struct lcore_config { > rte_cpuset_t cpuset; /**< cpu set which the lcore affinity to */ > }; > > + > +/* early configuration structure, when memory config is not mmapped */ > +extern struct rte_mem_config early_mem_config; > + > +/* platform-specific runtime dir */ > +extern char runtime_dir[PATH_MAX]; > + Those exports will disappear once the symbols are static. > extern struct lcore_config lcore_config[RTE_MAX_LCORE]; > > /** > @@ -62,6 +71,9 @@ struct rte_config { > struct rte_mem_config *mem_config; > } __rte_packed; > > +/* Address of global and public configuration */ > +extern struct rte_config rte_config; > + Ditto. > /** > * Get the global configuration structure. > * > diff --git a/lib/librte_eal/common/meson.build > b/lib/librte_eal/common/meson.build > index 3108442697..a16f002a3e 100644 > --- a/lib/librte_eal/common/meson.build > +++ b/lib/librte_eal/common/meson.build > @@ -7,6 +7,7 @@ if is_windows > sources += files( > 'eal_common_bus.c', > 'eal_common_class.c', > + 'eal_common_config.c', > 'eal_common_devargs.c', > 'eal_common_dynmem.c', > 'eal_common_errno.c', > @@ -34,6 +35,7 @@ sources += files( > 'eal_common_bus.c', > 'eal_common_cpuflags.c', > 'eal_common_class.c', > + 'eal_common_config.c', > 'eal_common_devargs.c', > 'eal_common_dev.c', > 'eal_common_errno.c', > diff --git a/lib/librte_eal/freebsd/Makefile b/lib/librte_eal/freebsd/Makefile > index 2374ba0b7d..7762b3ede4 100644 > --- a/lib/librte_eal/freebsd/Makefile > +++ b/lib/librte_eal/freebsd/Makefile > @@ -38,6 +38,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += eal_alarm.c > SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += eal_dev.c > > # from common dir > +SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += eal_common_config.c > SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += eal_common_lcore.c > SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += eal_common_timer.c > SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += eal_common_memzone.c > diff --git a/lib/librte_eal/freebsd/eal.c b/lib/librte_eal/freebsd/eal.c > index c41f265fac..eab961232e 100644 > --- a/lib/librte_eal/freebsd/eal.c > +++ b/lib/librte_eal/freebsd/eal.c > @@ -58,8 +58,6 @@ > > /* Allow the application to print its usage message too if set */ > static rte_usage_hook_t rte_application_usage_hook = NULL; > -/* early configuration structure, when memory config is not mmapped */ > -static struct rte_mem_config early_mem_config; > > /* define fd variable here, because file needs to be kept open for the > * duration of the program, as we hold a write lock on it in the primary > proc */ > @@ -72,11 +70,6 @@ static struct flock wr_lock = { > .l_len = sizeof(early_mem_config.memsegs), > }; > > -/* Address of global and public configuration */ > -static struct rte_config rte_config = { > - .mem_config = &early_mem_config, > -}; > - > /* internal configuration (per-core) */ > struct lcore_config lcore_config[RTE_MAX_LCORE]; > > @@ -86,9 +79,6 @@ struct internal_config internal_config; > /* used by rte_rdtsc() */ > int rte_cycles_vmware_tsc_map; > > -/* platform-specific runtime dir */ > -static char runtime_dir[PATH_MAX]; > - > static const char *default_runtime_dir = "/var/run"; > > int > @@ -151,13 +141,6 @@ eal_clean_runtime_dir(void) > return 0; > } > > - > -const char * > -rte_eal_get_runtime_dir(void) > -{ > - return runtime_dir; > -} > - > /* Return user provided mbuf pool ops name */ > const char * > rte_eal_mbuf_user_pool_ops(void) > @@ -165,19 +148,6 @@ rte_eal_mbuf_user_pool_ops(void) > return internal_config.user_mbuf_pool_ops_name; > } > > -/* Return a pointer to the configuration structure */ > -struct rte_config * > -rte_eal_get_configuration(void) > -{ > - return &rte_config; > -} > - > -enum rte_iova_mode > -rte_eal_iova_mode(void) > -{ > - return rte_eal_get_configuration()->iova_mode; > -} > - > /* parse a sysfs (or other) file containing one integer value */ > int > eal_parse_sysfs_value(const char *filename, unsigned long *val) > @@ -983,12 +953,6 @@ rte_eal_cleanup(void) > return 0; > } > > -enum rte_proc_type_t > -rte_eal_process_type(void) > -{ > - return rte_config.process_type; > -} > - > int rte_eal_has_pci(void) > { > return !internal_config.no_pci; > diff --git a/lib/librte_eal/linux/Makefile b/lib/librte_eal/linux/Makefile > index 07ce643bae..28404b0534 100644 > --- a/lib/librte_eal/linux/Makefile > +++ b/lib/librte_eal/linux/Makefile > @@ -45,6 +45,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += eal_alarm.c > SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += eal_dev.c > > # from common dir > +SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += eal_common_config.c > SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += eal_common_lcore.c > SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += eal_common_timer.c > SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += eal_common_memzone.c > diff --git a/lib/librte_eal/linux/eal.c b/lib/librte_eal/linux/eal.c > index f162124a37..8cbb8c644c 100644 > --- a/lib/librte_eal/linux/eal.c > +++ b/lib/librte_eal/linux/eal.c > @@ -72,9 +72,6 @@ > /* Allow the application to print its usage message too if set */ > static rte_usage_hook_t rte_application_usage_hook = NULL; > > -/* early configuration structure, when memory config is not mmapped */ > -static struct rte_mem_config early_mem_config; > - > /* define fd variable here, because file needs to be kept open for the > * duration of the program, as we hold a write lock on it in the primary > proc */ > static int mem_cfg_fd = -1; > @@ -86,11 +83,6 @@ static struct flock wr_lock = { > .l_len = sizeof(early_mem_config.memsegs), > }; > > -/* Address of global and public configuration */ > -static struct rte_config rte_config = { > - .mem_config = &early_mem_config, > -}; > - > /* internal configuration (per-core) */ > struct lcore_config lcore_config[RTE_MAX_LCORE]; > > @@ -100,9 +92,6 @@ struct internal_config internal_config; > /* used by rte_rdtsc() */ > int rte_cycles_vmware_tsc_map; > > -/* platform-specific runtime dir */ > -static char runtime_dir[PATH_MAX]; > - > static const char *default_runtime_dir = "/var/run"; > > int > @@ -241,12 +230,6 @@ eal_clean_runtime_dir(void) > return -1; > } > > -const char * > -rte_eal_get_runtime_dir(void) > -{ > - return runtime_dir; > -} > - > /* Return user provided mbuf pool ops name */ > const char * > rte_eal_mbuf_user_pool_ops(void) > @@ -254,19 +237,6 @@ rte_eal_mbuf_user_pool_ops(void) > return internal_config.user_mbuf_pool_ops_name; > } > > -/* Return a pointer to the configuration structure */ > -struct rte_config * > -rte_eal_get_configuration(void) > -{ > - return &rte_config; > -} > - > -enum rte_iova_mode > -rte_eal_iova_mode(void) > -{ > - return rte_eal_get_configuration()->iova_mode; > -} > - > /* parse a sysfs (or other) file containing one integer value */ > int > eal_parse_sysfs_value(const char *filename, unsigned long *val) > @@ -1343,12 +1313,6 @@ rte_eal_cleanup(void) > return 0; > } > > -enum rte_proc_type_t > -rte_eal_process_type(void) > -{ > - return rte_config.process_type; > -} > - > int rte_eal_has_hugepages(void) > { > return ! internal_config.no_hugetlbfs; > diff --git a/lib/librte_eal/windows/eal.c b/lib/librte_eal/windows/eal.c > index a43649abc0..506b29bf60 100644 > --- a/lib/librte_eal/windows/eal.c > +++ b/lib/librte_eal/windows/eal.c > @@ -32,36 +32,12 @@ static rte_usage_hook_t rte_application_usage_hook; > */ > static int mem_cfg_fd = -1; > > -/* early configuration structure, when memory config is not mmapped */ > -static struct rte_mem_config early_mem_config; > - > -/* Address of global and public configuration */ > -static struct rte_config rte_config = { > - .mem_config = &early_mem_config, > -}; > - > /* internal configuration (per-core) */ > struct lcore_config lcore_config[RTE_MAX_LCORE]; > > /* internal configuration */ > struct internal_config internal_config; > > -/* platform-specific runtime dir */ > -static char runtime_dir[PATH_MAX]; > - > -const char * > -rte_eal_get_runtime_dir(void) > -{ > - return runtime_dir; > -} > - > -/* Return a pointer to the configuration structure */ > -struct rte_config * > -rte_eal_get_configuration(void) > -{ > - return &rte_config; > -} > - > /* Detect if we are a primary or a secondary process */ > enum rte_proc_type_t > eal_proc_type_detect(void) > @@ -94,24 +70,12 @@ eal_proc_type_detect(void) > return ptype; > } > > -enum rte_proc_type_t > -rte_eal_process_type(void) > -{ > - return rte_config.process_type; > -} > - > int > rte_eal_has_hugepages(void) > { > return !internal_config.no_hugetlbfs; > } > > -enum rte_iova_mode > -rte_eal_iova_mode(void) > -{ > - return rte_config.iova_mode; > -} > - > /* display usage */ > static void > eal_usage(const char *prgname) > -- > 2.16.1.windows.4 > -- David Marchand