From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vk1-f194.google.com (mail-vk1-f194.google.com [209.85.221.194]) by dpdk.org (Postfix) with ESMTP id F057828FD for ; Fri, 3 May 2019 09:22:51 +0200 (CEST) Received: by mail-vk1-f194.google.com with SMTP id l17so1156033vke.7 for ; Fri, 03 May 2019 00:22:51 -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=O0KDB5hFT9m8UocpLylAAP5RJ7ATzOBx4TuRnguF2y0=; b=fjJ/TwkQcJU0/ewoEiwcKpI4JCTB7QYe05fdDKblve6AUaLOm72qYLIGYhAAarmLAQ oluwl2dtDA/kmn5kdFbzKUdHNhh5hA68AXpkkTLBzhind6FM1hWOgR/qXta1XL8GT5t1 Km8ZMqIBrgqC8pvTpEWdTvwpPg0IMYwpZlAlAivnCzPeCNRgF80i9gqylrVfhn5r4TUG jWOKD91ADpTGSquC+LCh813SCOAvA53VOdvMZWJMgrG1cc5+z1jyhYa4P9dKrg4TJ15i 2ALX2iQ9qJCUGa6MxLGcW7vrmTnjlUcCy2VB5WHtvcH3gDGAzg2Ehxihjz8T4vcOjwXF mqNQ== X-Gm-Message-State: APjAAAVWOTMUcTlmi+Mvl4mq9iftybURclnvaXwchHQSCqtwfybSoMXF iXByWhQtn38j6b/BdnPkV2BmUi7RTCTXhyjJpWNG6Q== X-Google-Smtp-Source: APXvYqyzLqvAP1ZcfqzDLIC8hiImE8I5XkBQcn/fb0qFuw8IuzQoaogIUElyLRcfE6o/zmwBGxI/2T0iDQ9om9xEkQU= X-Received: by 2002:ac5:c219:: with SMTP id m25mr1426083vkk.53.1556868171281; Fri, 03 May 2019 00:22:51 -0700 (PDT) MIME-Version: 1.0 References: <20190408182510.16078-1-stephen@networkplumber.org> <20190410171603.8979-1-stephen@networkplumber.org> <20190410171603.8979-3-stephen@networkplumber.org> In-Reply-To: <20190410171603.8979-3-stephen@networkplumber.org> From: David Marchand Date: Fri, 3 May 2019 09:22:40 +0200 Message-ID: To: Stephen Hemminger Cc: dev Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v2 2/5] eal: add accessor functions for lcore_config 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: , X-List-Received-Date: Fri, 03 May 2019 07:22:52 -0000 On Wed, Apr 10, 2019 at 7:16 PM Stephen Hemminger < stephen@networkplumber.org> wrote: > The fields of the internal EAL core configuration are currently > laid bare as part of the API. This is not good practice and limits > fixing issues with layout and sizes. > > Make new accessor functions for the fields used by current drivers > and examples. Mark return code functions as experimental > since this value might change in the future and probably shouldn't > have been used by non EAL code anyway. > > Signed-off-by: Stephen Hemminger > Reviewed-by: David Marchand > --- > doc/guides/rel_notes/release_19_05.rst | 6 +++ > lib/librte_eal/common/eal_common_lcore.c | 39 ++++++++++++++++++ > lib/librte_eal/common/include/rte_lcore.h | 50 ++++++++++++++++------- > lib/librte_eal/rte_eal_version.map | 11 +++++ > 4 files changed, 92 insertions(+), 14 deletions(-) > > diff --git a/doc/guides/rel_notes/release_19_05.rst > b/doc/guides/rel_notes/release_19_05.rst > index dbdf07a0c05b..32aae5d3bcfa 100644 > --- a/doc/guides/rel_notes/release_19_05.rst > +++ b/doc/guides/rel_notes/release_19_05.rst > @@ -222,6 +222,12 @@ ABI Changes > alignment for ``rte_crypto_asym_op`` to restore expected > ``rte_crypto_op`` > layout and alignment. > > +* eal: the lcore config structure ``struct lcore_config`` will be made > + internal to the EAL in a future release. This will allow the structure > to > + change without impacting API or ABI. All accesses to fields of this > + structure should be done by the corresponding accessor functions. > + For example, instead of using ``lcore_config[lcore_id].socket_id`` > + the function ``rte_lcore_socket_id(lcore_id)`` should be used instead. > > Shared Library Versions > ----------------------- > diff --git a/lib/librte_eal/common/eal_common_lcore.c > b/lib/librte_eal/common/eal_common_lcore.c > index 1cbac42286ba..6cf4d7abb0bd 100644 > --- a/lib/librte_eal/common/eal_common_lcore.c > +++ b/lib/librte_eal/common/eal_common_lcore.c > @@ -16,6 +16,45 @@ > #include "eal_private.h" > #include "eal_thread.h" > > +int rte_lcore_index(int lcore_id) > +{ > + if (unlikely(lcore_id >= RTE_MAX_LCORE)) > + return -1; > + > + if (lcore_id < 0) > + lcore_id = (int)rte_lcore_id(); > + > + return lcore_config[lcore_id].core_index; > +} > + > +int rte_lcore_to_cpu_id(int lcore_id) > +{ > + if (unlikely(lcore_id >= RTE_MAX_LCORE)) > + return -1; > + > + if (lcore_id < 0) > + lcore_id = (int)rte_lcore_id(); > + > + return lcore_config[lcore_id].core_id; > +} > + > +rte_cpuset_t rte_lcore_cpuset(unsigned int lcore_id) > +{ > + return lcore_config[lcore_id].cpuset; > +} > + > +unsigned int > +rte_lcore_to_socket_id(unsigned int lcore_id) > +{ > + return lcore_config[lcore_id].socket_id; > +} > + > +int > +rte_lcore_return_code(unsigned int lcore_id) > +{ > + return lcore_config[lcore_id].ret; > +} > + > static int > socket_id_cmp(const void *a, const void *b) > { > diff --git a/lib/librte_eal/common/include/rte_lcore.h > b/lib/librte_eal/common/include/rte_lcore.h > index 959ef9ece4b2..dc9f3dc0843d 100644 > --- a/lib/librte_eal/common/include/rte_lcore.h > +++ b/lib/librte_eal/common/include/rte_lcore.h > @@ -121,15 +121,8 @@ rte_lcore_count(void) > * @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 = (int)rte_lcore_id(); > - return lcore_config[lcore_id].core_index; > -} > +int __rte_experimental > +rte_lcore_index(int lcore_id); > This is new from v2. Please remove this __rte_experimental tag. > /** > * Return the ID of the physical socket of the logical core we are > @@ -177,11 +170,40 @@ rte_socket_id_by_idx(unsigned int idx); > * @return > * the ID of lcoreid's physical socket > */ > -static inline unsigned int > -rte_lcore_to_socket_id(unsigned int lcore_id) > -{ > - return lcore_config[lcore_id].socket_id; > -} > +unsigned int > +rte_lcore_to_socket_id(unsigned int lcore_id); > + > +/** > + * Return the id of the lcore on a socket starting from zero. > + * > + * @param lcore_id > + * The targeted lcore, or -1 for the current one. > + * @return > + * The relative index, or -1 if not enabled. > + */ > +int > +rte_lcore_to_cpu_id(int lcore_id); > + > +/** > + * Return the cpuset for a given lcore. > + * @param lcore_id > + * the targeted lcore, which MUST be between 0 and RTE_MAX_LCORE-1. > + * @return > + * The cpuset of that lcore > + */ > +rte_cpuset_t > +rte_lcore_cpuset(unsigned int lcore_id); > + > +/** > + * Get the return code from a lcore thread. > + * @param lcore_id > + * the targeted lcore, which MUST be between 0 and RTE_MAX_LCORE-1 > + * and finished > + * @return > + * the return code from the lcore thread > + */ > +int __rte_experimental > +rte_lcore_return_code(unsigned int lcore_id); > > /** > * Test if an lcore is enabled. > diff --git a/lib/librte_eal/rte_eal_version.map > b/lib/librte_eal/rte_eal_version.map > index d6e375135ad1..f6688327cad3 100644 > --- a/lib/librte_eal/rte_eal_version.map > +++ b/lib/librte_eal/rte_eal_version.map > @@ -268,6 +268,16 @@ DPDK_18.11 { > > } DPDK_18.08; > > +DPDK_19.05 { > + global: > + > + rte_lcore_cpuset; > + rte_lcore_index; > + rte_lcore_to_cpu_id; > + rte_lcore_to_socket_id; > + > +} DPDK_18.08; > + > 19.05 inherits from 18.11 not 18.08. EXPERIMENTAL { > global: > > @@ -329,6 +339,7 @@ EXPERIMENTAL { > rte_fbarray_set_free; > rte_fbarray_set_used; > rte_intr_callback_unregister_pending; > + rte_lcore_return_code; > rte_log_register_type_and_pick_level; > rte_malloc_dump_heaps; > rte_malloc_heap_create; > -- > 2.17.1 > And with these two changes, renewing my tag. Reviewed-by: David Marchand -- David Marchand From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id B9162A0AC5 for ; Fri, 3 May 2019 09:22:55 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C8449293B; Fri, 3 May 2019 09:22:53 +0200 (CEST) Received: from mail-vk1-f194.google.com (mail-vk1-f194.google.com [209.85.221.194]) by dpdk.org (Postfix) with ESMTP id F057828FD for ; Fri, 3 May 2019 09:22:51 +0200 (CEST) Received: by mail-vk1-f194.google.com with SMTP id l17so1156033vke.7 for ; Fri, 03 May 2019 00:22:51 -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=O0KDB5hFT9m8UocpLylAAP5RJ7ATzOBx4TuRnguF2y0=; b=fjJ/TwkQcJU0/ewoEiwcKpI4JCTB7QYe05fdDKblve6AUaLOm72qYLIGYhAAarmLAQ oluwl2dtDA/kmn5kdFbzKUdHNhh5hA68AXpkkTLBzhind6FM1hWOgR/qXta1XL8GT5t1 Km8ZMqIBrgqC8pvTpEWdTvwpPg0IMYwpZlAlAivnCzPeCNRgF80i9gqylrVfhn5r4TUG jWOKD91ADpTGSquC+LCh813SCOAvA53VOdvMZWJMgrG1cc5+z1jyhYa4P9dKrg4TJ15i 2ALX2iQ9qJCUGa6MxLGcW7vrmTnjlUcCy2VB5WHtvcH3gDGAzg2Ehxihjz8T4vcOjwXF mqNQ== X-Gm-Message-State: APjAAAVWOTMUcTlmi+Mvl4mq9iftybURclnvaXwchHQSCqtwfybSoMXF iXByWhQtn38j6b/BdnPkV2BmUi7RTCTXhyjJpWNG6Q== X-Google-Smtp-Source: APXvYqyzLqvAP1ZcfqzDLIC8hiImE8I5XkBQcn/fb0qFuw8IuzQoaogIUElyLRcfE6o/zmwBGxI/2T0iDQ9om9xEkQU= X-Received: by 2002:ac5:c219:: with SMTP id m25mr1426083vkk.53.1556868171281; Fri, 03 May 2019 00:22:51 -0700 (PDT) MIME-Version: 1.0 References: <20190408182510.16078-1-stephen@networkplumber.org> <20190410171603.8979-1-stephen@networkplumber.org> <20190410171603.8979-3-stephen@networkplumber.org> In-Reply-To: <20190410171603.8979-3-stephen@networkplumber.org> From: David Marchand Date: Fri, 3 May 2019 09:22:40 +0200 Message-ID: To: Stephen Hemminger Cc: dev Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v2 2/5] eal: add accessor functions for lcore_config 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" Message-ID: <20190503072240.d339rWsbRDZn3ve7PTpQlMK9_FBupyLUQUwpHTx2R9w@z> On Wed, Apr 10, 2019 at 7:16 PM Stephen Hemminger < stephen@networkplumber.org> wrote: > The fields of the internal EAL core configuration are currently > laid bare as part of the API. This is not good practice and limits > fixing issues with layout and sizes. > > Make new accessor functions for the fields used by current drivers > and examples. Mark return code functions as experimental > since this value might change in the future and probably shouldn't > have been used by non EAL code anyway. > > Signed-off-by: Stephen Hemminger > Reviewed-by: David Marchand > --- > doc/guides/rel_notes/release_19_05.rst | 6 +++ > lib/librte_eal/common/eal_common_lcore.c | 39 ++++++++++++++++++ > lib/librte_eal/common/include/rte_lcore.h | 50 ++++++++++++++++------- > lib/librte_eal/rte_eal_version.map | 11 +++++ > 4 files changed, 92 insertions(+), 14 deletions(-) > > diff --git a/doc/guides/rel_notes/release_19_05.rst > b/doc/guides/rel_notes/release_19_05.rst > index dbdf07a0c05b..32aae5d3bcfa 100644 > --- a/doc/guides/rel_notes/release_19_05.rst > +++ b/doc/guides/rel_notes/release_19_05.rst > @@ -222,6 +222,12 @@ ABI Changes > alignment for ``rte_crypto_asym_op`` to restore expected > ``rte_crypto_op`` > layout and alignment. > > +* eal: the lcore config structure ``struct lcore_config`` will be made > + internal to the EAL in a future release. This will allow the structure > to > + change without impacting API or ABI. All accesses to fields of this > + structure should be done by the corresponding accessor functions. > + For example, instead of using ``lcore_config[lcore_id].socket_id`` > + the function ``rte_lcore_socket_id(lcore_id)`` should be used instead. > > Shared Library Versions > ----------------------- > diff --git a/lib/librte_eal/common/eal_common_lcore.c > b/lib/librte_eal/common/eal_common_lcore.c > index 1cbac42286ba..6cf4d7abb0bd 100644 > --- a/lib/librte_eal/common/eal_common_lcore.c > +++ b/lib/librte_eal/common/eal_common_lcore.c > @@ -16,6 +16,45 @@ > #include "eal_private.h" > #include "eal_thread.h" > > +int rte_lcore_index(int lcore_id) > +{ > + if (unlikely(lcore_id >= RTE_MAX_LCORE)) > + return -1; > + > + if (lcore_id < 0) > + lcore_id = (int)rte_lcore_id(); > + > + return lcore_config[lcore_id].core_index; > +} > + > +int rte_lcore_to_cpu_id(int lcore_id) > +{ > + if (unlikely(lcore_id >= RTE_MAX_LCORE)) > + return -1; > + > + if (lcore_id < 0) > + lcore_id = (int)rte_lcore_id(); > + > + return lcore_config[lcore_id].core_id; > +} > + > +rte_cpuset_t rte_lcore_cpuset(unsigned int lcore_id) > +{ > + return lcore_config[lcore_id].cpuset; > +} > + > +unsigned int > +rte_lcore_to_socket_id(unsigned int lcore_id) > +{ > + return lcore_config[lcore_id].socket_id; > +} > + > +int > +rte_lcore_return_code(unsigned int lcore_id) > +{ > + return lcore_config[lcore_id].ret; > +} > + > static int > socket_id_cmp(const void *a, const void *b) > { > diff --git a/lib/librte_eal/common/include/rte_lcore.h > b/lib/librte_eal/common/include/rte_lcore.h > index 959ef9ece4b2..dc9f3dc0843d 100644 > --- a/lib/librte_eal/common/include/rte_lcore.h > +++ b/lib/librte_eal/common/include/rte_lcore.h > @@ -121,15 +121,8 @@ rte_lcore_count(void) > * @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 = (int)rte_lcore_id(); > - return lcore_config[lcore_id].core_index; > -} > +int __rte_experimental > +rte_lcore_index(int lcore_id); > This is new from v2. Please remove this __rte_experimental tag. > /** > * Return the ID of the physical socket of the logical core we are > @@ -177,11 +170,40 @@ rte_socket_id_by_idx(unsigned int idx); > * @return > * the ID of lcoreid's physical socket > */ > -static inline unsigned int > -rte_lcore_to_socket_id(unsigned int lcore_id) > -{ > - return lcore_config[lcore_id].socket_id; > -} > +unsigned int > +rte_lcore_to_socket_id(unsigned int lcore_id); > + > +/** > + * Return the id of the lcore on a socket starting from zero. > + * > + * @param lcore_id > + * The targeted lcore, or -1 for the current one. > + * @return > + * The relative index, or -1 if not enabled. > + */ > +int > +rte_lcore_to_cpu_id(int lcore_id); > + > +/** > + * Return the cpuset for a given lcore. > + * @param lcore_id > + * the targeted lcore, which MUST be between 0 and RTE_MAX_LCORE-1. > + * @return > + * The cpuset of that lcore > + */ > +rte_cpuset_t > +rte_lcore_cpuset(unsigned int lcore_id); > + > +/** > + * Get the return code from a lcore thread. > + * @param lcore_id > + * the targeted lcore, which MUST be between 0 and RTE_MAX_LCORE-1 > + * and finished > + * @return > + * the return code from the lcore thread > + */ > +int __rte_experimental > +rte_lcore_return_code(unsigned int lcore_id); > > /** > * Test if an lcore is enabled. > diff --git a/lib/librte_eal/rte_eal_version.map > b/lib/librte_eal/rte_eal_version.map > index d6e375135ad1..f6688327cad3 100644 > --- a/lib/librte_eal/rte_eal_version.map > +++ b/lib/librte_eal/rte_eal_version.map > @@ -268,6 +268,16 @@ DPDK_18.11 { > > } DPDK_18.08; > > +DPDK_19.05 { > + global: > + > + rte_lcore_cpuset; > + rte_lcore_index; > + rte_lcore_to_cpu_id; > + rte_lcore_to_socket_id; > + > +} DPDK_18.08; > + > 19.05 inherits from 18.11 not 18.08. EXPERIMENTAL { > global: > > @@ -329,6 +339,7 @@ EXPERIMENTAL { > rte_fbarray_set_free; > rte_fbarray_set_used; > rte_intr_callback_unregister_pending; > + rte_lcore_return_code; > rte_log_register_type_and_pick_level; > rte_malloc_dump_heaps; > rte_malloc_heap_create; > -- > 2.17.1 > And with these two changes, renewing my tag. Reviewed-by: David Marchand -- David Marchand