From 37b5d87b19e26b4afb56c3076dc62e926144083b Mon Sep 17 00:00:00 2001 From: Jacek Kalwas Date: Mon, 30 Jan 2023 04:20:17 -0500 Subject: [PATCH] env: expose function to get main core Main core can be different than first core (default behavior) as it can be specified by application argument. It can be useful to determine if given thread is matching main core. Signed-off-by: Jacek Kalwas Change-Id: I25292a91ad677806eaf19ad68acdda0f28da6cfb Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16596 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Aleksey Marchuk --- CHANGELOG.md | 4 ++++ include/spdk/env.h | 7 +++++++ lib/env_dpdk/spdk_env_dpdk.map | 1 + lib/env_dpdk/threads.c | 6 ++++++ 4 files changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e2fa44b5..bb55cba7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## v23.05: (Upcoming Release) +### env + +New function `spdk_env_get_main_core` was added. + ## v23.01 ### accel diff --git a/include/spdk/env.h b/include/spdk/env.h index bac976c30..d891da865 100644 --- a/include/spdk/env.h +++ b/include/spdk/env.h @@ -462,6 +462,13 @@ uint32_t spdk_env_get_core_count(void); */ uint32_t spdk_env_get_current_core(void); +/** + * Get the index of the main dedicated CPU core for this application. + * + * \return the index of the main dedicated CPU core. + */ +uint32_t spdk_env_get_main_core(void); + /** * Get the index of the first dedicated CPU core for this application. * diff --git a/lib/env_dpdk/spdk_env_dpdk.map b/lib/env_dpdk/spdk_env_dpdk.map index e2cc179ef..b9f798b32 100644 --- a/lib/env_dpdk/spdk_env_dpdk.map +++ b/lib/env_dpdk/spdk_env_dpdk.map @@ -34,6 +34,7 @@ spdk_mempool_lookup; spdk_env_get_core_count; spdk_env_get_current_core; + spdk_env_get_main_core; spdk_env_get_first_core; spdk_env_get_last_core; spdk_env_get_next_core; diff --git a/lib/env_dpdk/threads.c b/lib/env_dpdk/threads.c index 8ecce7efb..be5420dab 100644 --- a/lib/env_dpdk/threads.c +++ b/lib/env_dpdk/threads.c @@ -20,6 +20,12 @@ spdk_env_get_current_core(void) return rte_lcore_id(); } +uint32_t +spdk_env_get_main_core(void) +{ + return rte_get_main_lcore(); +} + uint32_t spdk_env_get_first_core(void) {