From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 215B1530A for ; Tue, 25 Nov 2014 11:40:52 +0100 (CET) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP; 25 Nov 2014 02:51:44 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.07,455,1413270000"; d="scan'208";a="627904916" Received: from bricha3-mobl3.ger.corp.intel.com ([10.243.20.15]) by fmsmga001.fm.intel.com with SMTP; 25 Nov 2014 02:51:41 -0800 Received: by (sSMTP sendmail emulation); Tue, 25 Nov 2014 10:51:41 +0025 Date: Tue, 25 Nov 2014 10:51:41 +0000 From: Bruce Richardson To: Thomas Monjalon Message-ID: <20141125105141.GI5260@bricha3-MOBL3> References: <1416692622-28886-1-git-send-email-thomas.monjalon@6wind.com> <1416692622-28886-10-git-send-email-thomas.monjalon@6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1416692622-28886-10-git-send-email-thomas.monjalon@6wind.com> Organization: Intel Shannon Ltd. User-Agent: Mutt/1.5.23 (2014-03-12) Cc: dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH 09/10] eal: get relative core index 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: , X-List-Received-Date: Tue, 25 Nov 2014 10:40:53 -0000 On Sat, Nov 22, 2014 at 10:43:41PM +0100, Thomas Monjalon wrote: > From: Patrick Lu > > EAL -c option allows the user to enable any lcore in the system. > Often times, the user app wants to know 1st enabled core, 2nd > enabled core, etc, rather than phyical core ID (rte_lcore_id().) > > The new API rte_lcore_index() will return an index from enabled lcores > starting from zero. > > Signed-off-by: Patrick Lu > Signed-off-by: Thomas Monjalon I think this is good as far as it goes, but I think an extra API to get the lcore with the given index would be a great extension to this. That would allow you to do: rte_eal_remote_launch(func0, arg0, rte_lcore_with_index(0)); rte_eal_remote_launch(func1, arg1, rte_lcore_with_index(1)); ... However, as a good start, I think this should be applied for now, so... Acked-by: Bruce Richardson > --- > lib/librte_eal/common/eal_common_options.c | 13 ++++++++++--- > lib/librte_eal/common/include/rte_lcore.h | 20 ++++++++++++++++++++ > 2 files changed, 30 insertions(+), 3 deletions(-) > > diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c > index 18d03e3..c9df8f5 100644 > --- a/lib/librte_eal/common/eal_common_options.c > +++ b/lib/librte_eal/common/eal_common_options.c > @@ -185,19 +185,23 @@ eal_parse_coremask(const char *coremask) > return -1; > } > cfg->lcore_role[idx] = ROLE_RTE; > + lcore_config[idx].core_index = count; > if (count == 0) > cfg->master_lcore = idx; > count++; > } else { > cfg->lcore_role[idx] = ROLE_OFF; > + lcore_config[idx].core_index = -1; > } > } > } > for (; i >= 0; i--) > if (coremask[i] != '0') > return -1; > - for (; idx < RTE_MAX_LCORE; idx++) > + for (; idx < RTE_MAX_LCORE; idx++) { > cfg->lcore_role[idx] = ROLE_OFF; > + lcore_config[idx].core_index = -1; > + } > if (count == 0) > return -1; > /* Update the count of enabled logical cores of the EAL configuration */ > @@ -225,9 +229,11 @@ eal_parse_corelist(const char *corelist) > while ((i > 0) && isblank(corelist[i - 1])) > i--; > > - /* Reset core roles */ > - for (idx = 0; idx < RTE_MAX_LCORE; idx++) > + /* Reset config */ > + for (idx = 0; idx < RTE_MAX_LCORE; idx++) { > cfg->lcore_role[idx] = ROLE_OFF; > + lcore_config[idx].core_index = -1; > + } > > /* Get list of cores */ > min = RTE_MAX_LCORE; > @@ -250,6 +256,7 @@ eal_parse_corelist(const char *corelist) > min = idx; > for (idx = min; idx <= max; idx++) { > cfg->lcore_role[idx] = ROLE_RTE; > + lcore_config[idx].core_index = count; > if (count == 0) > cfg->master_lcore = idx; > count++; > diff --git a/lib/librte_eal/common/include/rte_lcore.h b/lib/librte_eal/common/include/rte_lcore.h > index a0b4356..49b2c03 100644 > --- a/lib/librte_eal/common/include/rte_lcore.h > +++ b/lib/librte_eal/common/include/rte_lcore.h > @@ -64,6 +64,7 @@ struct lcore_config { > volatile enum rte_lcore_state_t state; /**< lcore state */ > unsigned socket_id; /**< physical socket id for this lcore */ > unsigned core_id; /**< core number on socket for this lcore */ > + int core_index; /**< relative index, starting from 0 */ > }; > > /** > @@ -110,6 +111,25 @@ rte_lcore_count(void) > } > > /** > + * Return the index of the lcore starting from zero. > + * The order is physical or given by command line (-l option). > + * > + * @param lcore_id > + * The targeted lcore, or -1 for the current one. > + * @return > + * The relative index, or -1 if not enabled. > + */ > +static inline int > +rte_lcore_index(int lcore_id) > +{ > + if (lcore_id >= RTE_MAX_LCORE) > + return -1; > + if (lcore_id < 0) > + lcore_id = rte_lcore_id(); > + return lcore_config[lcore_id].core_index; > +} > + > +/** > * Return the ID of the physical socket of the logical core we are > * running on. > * @return > -- > 2.1.3 >