Thread (24 messages) 24 messages, 3 authors, 2017-10-11

Re: [PATCH] eal: added new `rte_lcore_is_service_lcore` API.

From: Pavan Nikhilesh Bhagavatula <hidden>
Date: 2017-08-28 11:33:33

On Mon, Aug 28, 2017 at 10:59:51AM +0000, Van Haaren, Harry wrote:
quoted
From: Pavan Nikhilesh [mailto:pbhagavatula@caviumnetworks.com]
Sent: Wednesday, August 23, 2017 4:10 PM
To: dev@dpdk.org
Cc: Van Haaren, Harry <redacted>; Pavan Nikhilesh
[off-list ref]
Subject: [dpdk-dev] [PATCH] eal: added new `rte_lcore_is_service_lcore` API.

This API can be used to test if an lcore(EAL thread) is a service lcore.

Signed-off-by: Pavan Nikhilesh <redacted>
---
 lib/librte_eal/common/include/rte_lcore.h | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
diff --git a/lib/librte_eal/common/include/rte_lcore.h
b/lib/librte_eal/common/include/rte_lcore.h
index 50e0d0f..7854ea1 100644
--- a/lib/librte_eal/common/include/rte_lcore.h
+++ b/lib/librte_eal/common/include/rte_lcore.h
@@ -180,6 +180,24 @@ rte_lcore_is_enabled(unsigned lcore_id)
 }

 /**
+ * Test if an lcore is service lcore.
+ *
+ * @param lcore_id
+ *   The identifier of the lcore, which MUST be between 0 and
+ *   RTE_MAX_LCORE-1.
+ * @return
+ *   True if the given lcore is service; false otherwise.
+ */
+static inline int
+rte_lcore_is_service_lcore(unsigned lcore_id)
+{
+	struct rte_config *cfg = rte_eal_get_configuration();
+	if (lcore_id >= RTE_MAX_LCORE)
+		return 0;
+	return cfg->lcore_role[lcore_id] == ROLE_SERVICE;
+}
No header file and Static inline - so this is only to be used internally in the service cores library?
If so, the function should actually be used, instead of only added but not used in the library itself.
The enum rte_lcore_role_t has ROLE_SERVICE which tells that a particular lcore is
a service lcore as well as an EAL thread some libraries such as rte_timer allow
specific operations only over EAL threads.

The rte_timer lib uses the rte_is_lcore_enabled() call to check if a lcore is an
EAL thread, Which checks if the lcore role is  ROLE_RTE. But it should also
allow timers to be registered on a service core as processing those timers can
be done on them. This new function allows such libraries to check if the role is
ROLE_SERVICE and allow those operations.

Currently, the only rte_timer library has this specific role check. The
following patch shows the usage in rte_timer library.

http://dpdk.org/dev/patchwork/patch/27819/
Or am I mis-understanding the intent?

-Harry
Thanks,
Pavan.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help