Commit 7ee16130 authored by Jim Harris's avatar Jim Harris
Browse files

env: add spdk_env_get_cpuset()



This will initialize an spdk_cpuset parameter to
the set of cores reported by the env layer.

Signed-off-by: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: Ie3a2873f170786424b09aeb735836a416b1f73b3
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17874


Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarXiaodong Liu <xiaodong.liu@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 216e3b90
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@ multiple readers.

### env

New function `spdk_env_get_main_core` was added.
New functions `spdk_env_get_main_core` and `spdk_env_get_cpuset` were added.

### gpt

+12 −0
Original line number Diff line number Diff line
@@ -509,6 +509,18 @@ uint32_t spdk_env_get_next_core(uint32_t prev_core);
 */
uint32_t spdk_env_get_socket_id(uint32_t core);

struct spdk_cpuset;

/**
 * Create a cpuset with each dedicated core's bit set to true.
 *
 * This function will first zero the cpuset and then set the
 * bit for each core dedicated to this application to true.
 *
 * \param cpuset spdk_cpuset to initialize
 */
void spdk_env_get_cpuset(struct spdk_cpuset *cpuset);

typedef int (*thread_start_fn)(void *);

/**
+1 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@
	spdk_env_get_last_core;
	spdk_env_get_next_core;
	spdk_env_get_socket_id;
	spdk_env_get_cpuset;
	spdk_env_thread_launch_pinned;
	spdk_env_thread_wait_all;
	spdk_process_is_primary;
+13 −0
Original line number Diff line number Diff line
@@ -8,6 +8,8 @@
#include <rte_config.h>
#include <rte_lcore.h>

#include "spdk/cpuset.h"

uint32_t
spdk_env_get_core_count(void)
{
@@ -69,6 +71,17 @@ spdk_env_get_socket_id(uint32_t core)
	return rte_lcore_to_socket_id(core);
}

void
spdk_env_get_cpuset(struct spdk_cpuset *cpuset)
{
	uint32_t i;

	spdk_cpuset_zero(cpuset);
	SPDK_ENV_FOREACH_CORE(i) {
		spdk_cpuset_set_cpu(cpuset, i, true);
	}
}

int
spdk_env_thread_launch_pinned(uint32_t core, thread_start_fn fn, void *arg)
{