From patchwork Sat Nov 22 21:43:38 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 1454 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 055137FCF; Sat, 22 Nov 2014 22:33:49 +0100 (CET) Received: from mail-wi0-f172.google.com (mail-wi0-f172.google.com [209.85.212.172]) by dpdk.org (Postfix) with ESMTP id 352F17FAC for ; Sat, 22 Nov 2014 22:33:45 +0100 (CET) Received: by mail-wi0-f172.google.com with SMTP id n3so2378993wiv.5 for ; Sat, 22 Nov 2014 13:44:25 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=Dp4qvkQGNHpR7CrTdVJysuhAdUQHe5XDlcc6QNaB6w0=; b=bLjEBXIyLDNLEXW7yAwAbkP5AZq8W9CogO8v5iT7MlbjE7KHox2lq70yvAcXsakYKS 7NQQzny/0cM2/Q4tytax99tf6NKocf4cE4OgTD4xbsp3PlUJOij5iRdakDRQ3S6l++RN czTMC8N9RmhMRHcR/5rSqyxrC3kYSfAbBaoKoAfmPFLrO42wus/LQSEBklkkLSYkm+HS eGIXKNYynXpXd4/GJtZc65KIXRdWkOyUN4qOwYwtKh9oo8uhmZdurp/cKD+/VObTJMWn 9HARZcBljeahJTvd8tzjzaO0M1g4mCwLmqaPAxY0nIzqIrADiwPhC91PeMedi5cp6Sbs RDcw== X-Gm-Message-State: ALoCoQlbBJLjKxxsX7E7dlE5iRkB8aHMJYKxwYpVEUZC7aB6fbWjDRvIwxLTRLr/Py+wjuTSBp83 X-Received: by 10.180.11.8 with SMTP id m8mr8262983wib.11.1416692665775; Sat, 22 Nov 2014 13:44:25 -0800 (PST) Received: from localhost.localdomain (136-92-190-109.dsl.ovh.fr. [109.190.92.136]) by mx.google.com with ESMTPSA id cz3sm13724087wjb.23.2014.11.22.13.44.24 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 22 Nov 2014 13:44:25 -0800 (PST) From: Thomas Monjalon To: dev@dpdk.org Date: Sat, 22 Nov 2014 22:43:38 +0100 Message-Id: <1416692622-28886-7-git-send-email-thomas.monjalon@6wind.com> X-Mailer: git-send-email 2.1.3 In-Reply-To: <1416692622-28886-1-git-send-email-thomas.monjalon@6wind.com> References: <1416692622-28886-1-git-send-email-thomas.monjalon@6wind.com> Subject: [dpdk-dev] [PATCH 06/10] eal: factorize configuration adjustment X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Some adjustments are done after options parsing and are common to Linux and BSD. Remove process_type adjustment in rte_config_init() because it is already done in eal_parse_args(). eal_proc_type_detect() is kept duplicated because it open a file descriptor which is used later in each eal.c. Signed-off-by: Thomas Monjalon Acked-by: Bruce Richardson --- lib/librte_eal/bsdapp/eal/eal.c | 18 +++++------------- lib/librte_eal/common/eal_common_options.c | 16 ++++++++++++++++ lib/librte_eal/common/eal_options.h | 2 ++ lib/librte_eal/linuxapp/eal/eal.c | 18 +++++------------- 4 files changed, 28 insertions(+), 26 deletions(-) diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c index 20a9c5f..69f3c03 100644 --- a/lib/librte_eal/bsdapp/eal/eal.c +++ b/lib/librte_eal/bsdapp/eal/eal.c @@ -224,7 +224,7 @@ rte_eal_config_attach(void) } /* Detect if we are a primary or a secondary process */ -static enum rte_proc_type_t +enum rte_proc_type_t eal_proc_type_detect(void) { enum rte_proc_type_t ptype = RTE_PROC_PRIMARY; @@ -247,9 +247,7 @@ eal_proc_type_detect(void) static void rte_config_init(void) { - rte_config.process_type = (internal_config.process_type == RTE_PROC_AUTO) ? - eal_proc_type_detect() : /* for auto, detect the type */ - internal_config.process_type; /* otherwise use what's already set */ + rte_config.process_type = internal_config.process_type; switch (rte_config.process_type){ case RTE_PROC_PRIMARY: @@ -313,7 +311,7 @@ eal_get_hugepage_mem_size(void) static int eal_parse_args(int argc, char **argv) { - int opt, ret, i; + int opt, ret; char **argvopt; int option_index; char *prgname = argv[0]; @@ -360,8 +358,8 @@ eal_parse_args(int argc, char **argv) } } - if (internal_config.process_type == RTE_PROC_AUTO) - internal_config.process_type = eal_proc_type_detect(); + if (eal_adjust_config(&internal_config) != 0) + return -1; /* sanity checks */ if (eal_check_common_options(&internal_config) != 0) { @@ -371,12 +369,6 @@ eal_parse_args(int argc, char **argv) if (optind >= 0) argv[optind-1] = prgname; - - /* if no memory amounts were requested, this will result in 0 and - * will be overriden later, right after eal_hugepage_info_init() */ - for (i = 0; i < RTE_MAX_NUMA_NODES; i++) - internal_config.memory += internal_config.socket_mem[i]; - ret = optind-1; optind = 0; /* reset getopt lib */ return ret; diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c index 630dfe0..63710b0 100644 --- a/lib/librte_eal/common/eal_common_options.c +++ b/lib/librte_eal/common/eal_common_options.c @@ -400,6 +400,22 @@ eal_parse_common_option(int opt, const char *optarg, } int +eal_adjust_config(struct internal_config *internal_cfg) +{ + int i; + + if (internal_config.process_type == RTE_PROC_AUTO) + internal_config.process_type = eal_proc_type_detect(); + + /* if no memory amounts were requested, this will result in 0 and + * will be overridden later, right after eal_hugepage_info_init() */ + for (i = 0; i < RTE_MAX_NUMA_NODES; i++) + internal_cfg->memory += internal_cfg->socket_mem[i]; + + return 0; +} + +int eal_check_common_options(struct internal_config *internal_cfg) { struct rte_config *cfg = rte_eal_get_configuration(); diff --git a/lib/librte_eal/common/eal_options.h b/lib/librte_eal/common/eal_options.h index 75351c0..f58965c 100644 --- a/lib/librte_eal/common/eal_options.h +++ b/lib/librte_eal/common/eal_options.h @@ -83,7 +83,9 @@ extern const struct option eal_long_options[]; int eal_parse_common_option(int opt, const char *argv, struct internal_config *conf); +int eal_adjust_config(struct internal_config *internal_cfg); int eal_check_common_options(struct internal_config *internal_cfg); void eal_common_usage(void); +enum rte_proc_type_t eal_proc_type_detect(void); #endif /* EAL_OPTIONS_H */ diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c index f5de277..5e5a7a0 100644 --- a/lib/librte_eal/linuxapp/eal/eal.c +++ b/lib/librte_eal/linuxapp/eal/eal.c @@ -284,7 +284,7 @@ rte_eal_config_reattach(void) } /* Detect if we are a primary or a secondary process */ -static enum rte_proc_type_t +enum rte_proc_type_t eal_proc_type_detect(void) { enum rte_proc_type_t ptype = RTE_PROC_PRIMARY; @@ -307,9 +307,7 @@ eal_proc_type_detect(void) static void rte_config_init(void) { - rte_config.process_type = (internal_config.process_type == RTE_PROC_AUTO) ? - eal_proc_type_detect() : /* for auto, detect the type */ - internal_config.process_type; /* otherwise use what's already set */ + rte_config.process_type = internal_config.process_type; switch (rte_config.process_type){ case RTE_PROC_PRIMARY: @@ -504,7 +502,7 @@ eal_get_hugepage_mem_size(void) static int eal_parse_args(int argc, char **argv) { - int opt, ret, i; + int opt, ret; char **argvopt; int option_index; char *prgname = argv[0]; @@ -616,8 +614,8 @@ eal_parse_args(int argc, char **argv) } } - if (internal_config.process_type == RTE_PROC_AUTO) - internal_config.process_type = eal_proc_type_detect(); + if (eal_adjust_config(&internal_config) != 0) + return -1; /* sanity checks */ if (eal_check_common_options(&internal_config) != 0) { @@ -635,12 +633,6 @@ eal_parse_args(int argc, char **argv) if (optind >= 0) argv[optind-1] = prgname; - - /* if no memory amounts were requested, this will result in 0 and - * will be overriden later, right after eal_hugepage_info_init() */ - for (i = 0; i < RTE_MAX_NUMA_NODES; i++) - internal_config.memory += internal_config.socket_mem[i]; - ret = optind-1; optind = 0; /* reset getopt lib */ return ret;