From: David Marchand <david.marchand@redhat.com>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: dev <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v2 2/5] eal: add accessor functions for lcore_config
Date: Fri, 3 May 2019 09:22:40 +0200 [thread overview]
Message-ID: <CAJFAV8xaO-YciK0M09qKvi_fye+mSHgRxkayWS5J2vHAtktKbw@mail.gmail.com> (raw)
Message-ID: <20190503072240.d339rWsbRDZn3ve7PTpQlMK9_FBupyLUQUwpHTx2R9w@z> (raw)
In-Reply-To: <20190410171603.8979-3-stephen@networkplumber.org>
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 <stephen@networkplumber.org>
> Reviewed-by: David Marchand <david.marchand@redhat.com>
> ---
> 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@redhat.com>
--
David Marchand
next prev parent reply other threads:[~2019-05-03 7:22 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-08 18:25 [dpdk-dev] [PATCH v1 0/5] make lcore_config internal Stephen Hemminger
2019-04-08 18:25 ` Stephen Hemminger
2019-04-08 18:25 ` [dpdk-dev] [PATCH v1 1/5] eal: add accessor functions for lcore_config Stephen Hemminger
2019-04-08 18:25 ` Stephen Hemminger
2019-04-09 7:43 ` David Marchand
2019-04-09 7:43 ` David Marchand
2019-04-08 18:25 ` [dpdk-dev] [PATCH v1 2/5] bus: use lcore accessor functions Stephen Hemminger
2019-04-08 18:25 ` Stephen Hemminger
2019-04-09 7:43 ` David Marchand
2019-04-09 7:43 ` David Marchand
2019-04-08 18:25 ` [dpdk-dev] [PATCH v1 3/5] examples/bond: use lcore accessor Stephen Hemminger
2019-04-08 18:25 ` Stephen Hemminger
2019-04-09 7:43 ` David Marchand
2019-04-09 7:43 ` David Marchand
2019-04-08 18:25 ` [dpdk-dev] [PATCH v1 4/5] app/test: use lcore accessor functions Stephen Hemminger
2019-04-08 18:25 ` Stephen Hemminger
2019-04-09 7:43 ` David Marchand
2019-04-09 7:43 ` David Marchand
2019-04-08 18:25 ` [dpdk-dev] [PATCH v1 5/5] eal: make lcore_config private Stephen Hemminger
2019-04-08 18:25 ` Stephen Hemminger
2019-04-10 17:15 ` [dpdk-dev] [PATCH v2 0/5] make lcore_config internal Stephen Hemminger
2019-04-10 17:15 ` Stephen Hemminger
2019-04-10 17:15 ` [dpdk-dev] [PATCH v2 1/5] eal: use unsigned int in rte_lcore.h functions Stephen Hemminger
2019-04-10 17:15 ` Stephen Hemminger
2019-05-03 7:24 ` David Marchand
2019-05-03 7:24 ` David Marchand
2019-04-10 17:16 ` [dpdk-dev] [PATCH v2 2/5] eal: add accessor functions for lcore_config Stephen Hemminger
2019-04-10 17:16 ` Stephen Hemminger
2019-04-16 17:03 ` Jerin Jacob Kollanukkaran
2019-04-16 17:03 ` Jerin Jacob Kollanukkaran
2019-04-30 20:53 ` Stephen Hemminger
2019-04-30 20:53 ` Stephen Hemminger
2019-05-01 2:12 ` [dpdk-dev] [EXT] " Jerin Jacob Kollanukkaran
2019-05-01 2:12 ` Jerin Jacob Kollanukkaran
2019-05-03 7:22 ` David Marchand [this message]
2019-05-03 7:22 ` [dpdk-dev] " David Marchand
2019-04-10 17:16 ` [dpdk-dev] [PATCH v2 3/5] bus: use lcore accessor functions Stephen Hemminger
2019-04-10 17:16 ` Stephen Hemminger
2019-04-10 17:16 ` [dpdk-dev] [PATCH v2 4/5] examples/bond: use lcore accessor Stephen Hemminger
2019-04-10 17:16 ` Stephen Hemminger
2019-05-03 7:29 ` David Marchand
2019-05-03 7:29 ` David Marchand
2019-04-10 17:16 ` [dpdk-dev] [PATCH v2 5/5] app/test: use lcore accessor functions Stephen Hemminger
2019-04-10 17:16 ` Stephen Hemminger
2019-05-02 23:15 ` [dpdk-dev] [PATCH v2 0/5] make lcore_config internal Stephen Hemminger
2019-05-02 23:15 ` Stephen Hemminger
2019-05-03 17:25 ` [dpdk-dev] [PATCH v3 0/5] prepare to make lcore_config not visible in ABI Stephen Hemminger
2019-05-03 17:25 ` Stephen Hemminger
2019-05-03 17:25 ` [dpdk-dev] [PATCH v3 1/5] eal: use unsigned int in rte_lcore.h functions Stephen Hemminger
2019-05-03 17:25 ` Stephen Hemminger
2019-05-03 17:25 ` [dpdk-dev] [PATCH v3 2/5] eal: add accessor functions for lcore_config Stephen Hemminger
2019-05-03 17:25 ` Stephen Hemminger
2019-05-03 17:25 ` [dpdk-dev] [PATCH v3 3/5] bus: use lcore accessor functions Stephen Hemminger
2019-05-03 17:25 ` Stephen Hemminger
2019-05-03 17:25 ` [dpdk-dev] [PATCH v3 4/5] examples/bond: use lcore accessor Stephen Hemminger
2019-05-03 17:25 ` Stephen Hemminger
2019-05-03 17:25 ` [dpdk-dev] [PATCH v3 5/5] app/test: use lcore accessor functions Stephen Hemminger
2019-05-03 17:25 ` Stephen Hemminger
2019-05-06 7:20 ` [dpdk-dev] [PATCH v3 0/5] prepare to make lcore_config not visible in ABI David Marchand
2019-05-06 7:20 ` David Marchand
2019-05-23 13:58 ` [dpdk-dev] [PATCH v4 0/5] make lcore_config internal David Marchand
2019-05-23 13:58 ` [dpdk-dev] [PATCH v4 1/5] eal: use unsigned int in lcore API prototypes David Marchand
2019-05-23 13:58 ` [dpdk-dev] [PATCH v4 2/5] eal: add lcore accessors David Marchand
2019-05-29 22:46 ` Thomas Monjalon
2019-05-29 22:51 ` Stephen Hemminger
2019-05-30 7:31 ` David Marchand
2019-05-30 7:40 ` Thomas Monjalon
2019-05-30 10:11 ` Bruce Richardson
2019-05-30 13:39 ` Thomas Monjalon
2019-05-30 17:00 ` David Marchand
2019-05-30 20:08 ` Bruce Richardson
2019-05-23 13:58 ` [dpdk-dev] [PATCH v4 3/5] drivers/bus: use " David Marchand
2019-05-23 13:59 ` [dpdk-dev] [PATCH v4 4/5] examples/bond: " David Marchand
2019-05-23 13:59 ` [dpdk-dev] [PATCH v4 5/5] test: " David Marchand
2019-05-23 15:14 ` [dpdk-dev] [PATCH v4 0/5] make lcore_config internal Stephen Hemminger
2019-05-31 15:36 ` [dpdk-dev] [PATCH v5 " David Marchand
2019-05-31 15:36 ` [dpdk-dev] [PATCH v5 1/5] eal: use unsigned int in lcore API prototypes David Marchand
2019-05-31 15:36 ` [dpdk-dev] [PATCH v5 2/5] eal: add lcore accessors David Marchand
2019-05-31 15:37 ` [dpdk-dev] [PATCH v5 3/5] drivers/bus: use " David Marchand
2019-05-31 15:37 ` [dpdk-dev] [PATCH v5 4/5] examples/bond: " David Marchand
2019-05-31 15:37 ` [dpdk-dev] [PATCH v5 5/5] test: " David Marchand
2019-06-04 15:11 ` Eads, Gage
2019-06-03 10:32 ` [dpdk-dev] [PATCH v5 0/5] make lcore_config internal Thomas Monjalon
2019-06-03 20:15 ` Stephen Hemminger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAJFAV8xaO-YciK0M09qKvi_fye+mSHgRxkayWS5J2vHAtktKbw@mail.gmail.com \
--to=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=stephen@networkplumber.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).