From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 86E4DA04A3; Tue, 16 Jun 2020 10:46:24 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 591C71BECF; Tue, 16 Jun 2020 10:46:24 +0200 (CEST) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by dpdk.org (Postfix) with ESMTP id BB52E1BE9E for ; Tue, 16 Jun 2020 10:46:22 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1592297182; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=tNM5Sx3Gu5dcBzkmHsjVv/4uVv6L6SOwBnIDwRMoH6o=; b=OKGJzOZfwOlXDLV/ExeypnqkJK7D/Jx7gxQdQxWEcoGToMIU1iykAwDGlAOVmt5FW2IGpu btlH24QnYTmbwrlTnveWJj0LrDl1XN4ZXQVKPTv+zXKwchBGAh+yVEsEwbVg3F8VIDx2VK uk9WwhoPlVAtr7xXJ48VX4pxhPANUt0= Received: from mail-vk1-f199.google.com (mail-vk1-f199.google.com [209.85.221.199]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-70-4UXDPQN1N-KPzQS-vQLVEg-1; Tue, 16 Jun 2020 04:46:20 -0400 X-MC-Unique: 4UXDPQN1N-KPzQS-vQLVEg-1 Received: by mail-vk1-f199.google.com with SMTP id s188so4922628vkh.4 for ; Tue, 16 Jun 2020 01:46:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=tNM5Sx3Gu5dcBzkmHsjVv/4uVv6L6SOwBnIDwRMoH6o=; b=L2JjJmn9Y/0Cqf78LBhsEWReDBqv/X9p7qAsCO+5d3C+UOZIci4+Fo+gteO4vKrxeD Tgj3+Nkg7QI9d+W9fP3K4qG/w7XUNHAdChMx+pOTfGX+OMcDokTPSO3/M4eB6VPPyo0R vTGyf6mwRwmWFI6alU4u3bGwIroy2pWKuf8w3rKeNxx5PVAGTKy/s/6seeLoIP/G8mS9 g/fiuXVN5WIcZfI+kFVl+R6wNoLcxresJGrVA9sZknopVZF3IFCeuxpibRdeKlrjm4vz YzXAfsE5TTbOboHlCguI0eziV//QtfRFAnf/WnVmFf6noiJzlqq9drnHC3C/3t54mQpW I0CQ== X-Gm-Message-State: AOAM532uPz8t5hGxGZtnaF9SKuLEHJhFhvkujUxZhdAc3EfbAJGXW/1h TwEdfZDx1YJLDitdDtI4g4ePIjKvf0h38874zIXnEZ/a43l9wFadqmZeMNNScQ1B83xGm3MELI4 DowGIgjWayFfKP4x6wso= X-Received: by 2002:a67:6704:: with SMTP id b4mr656260vsc.39.1592297179329; Tue, 16 Jun 2020 01:46:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx+4P5BGKy6AetzbDz/FUohbPd2z8PdB+F40Sra97NDglY1rzKADx+Prtz/45gK7fllPNCs6eUSir8Dmjepiaw= X-Received: by 2002:a67:6704:: with SMTP id b4mr656244vsc.39.1592297178904; Tue, 16 Jun 2020 01:46:18 -0700 (PDT) MIME-Version: 1.0 References: <20200609103139.22168-1-talshn@mellanox.com> <20200609103139.22168-2-talshn@mellanox.com> In-Reply-To: <20200609103139.22168-2-talshn@mellanox.com> From: David Marchand Date: Tue, 16 Jun 2020 10:46:07 +0200 Message-ID: To: Tal Shnaiderman , Thomas Monjalon Cc: dev , Pallavi Kadam , Dmitry Kozlyuk , Gaetan Rivet , Ranjit Menon , navasile@linux.microsoft.com, Harini Ramakrishnan , Omar Cardona , "Burakov, Anatoly" X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [PATCH v5 1/8] eal: move OS common functions to single file X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Tue, Jun 9, 2020 at 12:32 PM wrote: > > From: Tal Shnaiderman > > 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 > --- > 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 > + > +#include 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 > #include > > +#include 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