[PATCH] service: add new `rte_service_lcore_count_services` API
From: Pavan Nikhilesh <hidden>
Date: 2017-08-23 11:17:39
Subsystem:
library code, the rest · Maintainers:
Andrew Morton, Linus Torvalds
This new API returns the number of services that are running on a specific service core. It allows an application to decide which service core to run a new service on. Signed-off-by: Pavan Nikhilesh <redacted> --- lib/librte_eal/common/include/rte_service.h | 12 ++++++++++++ lib/librte_eal/common/rte_service.c | 11 +++++++++++ 2 files changed, 23 insertions(+)
diff --git a/lib/librte_eal/common/include/rte_service.h b/lib/librte_eal/common/include/rte_service.h
index 7c6f738..5f0904f 100644
--- a/lib/librte_eal/common/include/rte_service.h
+++ b/lib/librte_eal/common/include/rte_service.h@@ -374,6 +374,18 @@ int32_t rte_service_lcore_list(uint32_t array[], uint32_t n); * @warning * @b EXPERIMENTAL: this API may change without prior notice * + * Get the numer of services running on the supplied lcore. + * + * @param Lcore Id of the service core. + * @retval >=0 Number of services registered to this core. + * @retval -EINVAL The provided lcore is not a service core. + */ +int32_t rte_service_lcore_count_services(uint32_t lcore); + +/** + * @warning + * @b EXPERIMENTAL: this API may change without prior notice + * * Dumps any information available about the service. If service is NULL, * dumps info for all services. */
diff --git a/lib/librte_eal/common/rte_service.c b/lib/librte_eal/common/rte_service.c
index 7efb76d..ddaed22 100644
--- a/lib/librte_eal/common/rte_service.c
+++ b/lib/librte_eal/common/rte_service.c@@ -397,6 +397,17 @@ rte_service_lcore_list(uint32_t array[], uint32_t n) } int32_t +rte_service_lcore_count_services(uint32_t lcore) +{ + struct core_state *cs = &lcore_states[lcore]; + + if (!cs->is_service_core) + return -EINVAL; + + return __builtin_popcountll(cs->service_mask); +} + +int32_t rte_service_start_with_defaults(void) { /* create a default mapping from cores to services, then start the
--
2.7.4