event: return const cpumask for spdk_app_get_core_mask() API

Fix issue #1541.

Change-Id: Ia0ecc049387f1e8eb04f1b55f7a7ace0b4b42491
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4306
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Changpeng Liu 2020-09-17 21:22:49 -04:00 committed by Tomasz Zawadzki
parent 107dd02126
commit 276c31cd1f
5 changed files with 14 additions and 7 deletions

View File

@ -239,7 +239,7 @@ int spdk_app_parse_core_mask(const char *mask, struct spdk_cpuset *cpumask);
* *
* \return the bitmask of the active CPU cores. * \return the bitmask of the active CPU cores.
*/ */
struct spdk_cpuset *spdk_app_get_core_mask(void); const struct spdk_cpuset *spdk_app_get_core_mask(void);
#define SPDK_APP_GETOPT_STRING "c:de:ghi:m:n:p:r:s:uvB:L:RW:" #define SPDK_APP_GETOPT_STRING "c:de:ghi:m:n:p:r:s:uvB:L:RW:"

View File

@ -169,15 +169,17 @@ static const struct option g_cmdline_options[] = {
static void static void
app_config_dump_global_section(FILE *fp) app_config_dump_global_section(FILE *fp)
{ {
struct spdk_cpuset *coremask; const struct spdk_cpuset *coremask;
struct spdk_cpuset tmp_mask;
if (NULL == fp) { if (NULL == fp) {
return; return;
} }
coremask = spdk_app_get_core_mask(); coremask = spdk_app_get_core_mask();
spdk_cpuset_copy(&tmp_mask, coremask);
fprintf(fp, GLOBAL_CONFIG_TMPL, spdk_cpuset_fmt(coremask), fprintf(fp, GLOBAL_CONFIG_TMPL, spdk_cpuset_fmt(&tmp_mask),
spdk_trace_get_tpoint_group_mask()); spdk_trace_get_tpoint_group_mask());
} }

View File

@ -484,6 +484,8 @@ rpc_thread_set_cpumask(struct spdk_jsonrpc_request *request,
{ {
struct rpc_thread_set_cpumask req = {}; struct rpc_thread_set_cpumask req = {};
struct rpc_thread_set_cpumask_ctx *ctx; struct rpc_thread_set_cpumask_ctx *ctx;
const struct spdk_cpuset *coremask;
struct spdk_cpuset tmp_mask;
struct spdk_thread *thread; struct spdk_thread *thread;
int rc; int rc;
@ -521,9 +523,11 @@ rpc_thread_set_cpumask(struct spdk_jsonrpc_request *request,
} }
if (spdk_cpuset_count(&ctx->cpumask) == 0) { if (spdk_cpuset_count(&ctx->cpumask) == 0) {
coremask = spdk_app_get_core_mask();
spdk_cpuset_copy(&tmp_mask, coremask);
spdk_jsonrpc_send_error_response_fmt(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, spdk_jsonrpc_send_error_response_fmt(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
"No CPU is selected from reactor mask %s\n", "No CPU is selected from reactor mask %s\n",
spdk_cpuset_fmt(spdk_app_get_core_mask())); spdk_cpuset_fmt(&tmp_mask));
goto err; goto err;
} }

View File

@ -414,7 +414,7 @@ int
spdk_app_parse_core_mask(const char *mask, struct spdk_cpuset *cpumask) spdk_app_parse_core_mask(const char *mask, struct spdk_cpuset *cpumask)
{ {
int ret; int ret;
struct spdk_cpuset *validmask; const struct spdk_cpuset *validmask;
ret = spdk_cpuset_parse(cpumask, mask); ret = spdk_cpuset_parse(cpumask, mask);
if (ret < 0) { if (ret < 0) {
@ -427,7 +427,7 @@ spdk_app_parse_core_mask(const char *mask, struct spdk_cpuset *cpumask)
return 0; return 0;
} }
struct spdk_cpuset * const struct spdk_cpuset *
spdk_app_get_core_mask(void) spdk_app_get_core_mask(void)
{ {
return &g_reactor_core_mask; return &g_reactor_core_mask;

View File

@ -1257,7 +1257,8 @@ __construct_targets(void *arg)
static void static void
test_main(void *arg1) test_main(void *arg1)
{ {
struct spdk_cpuset tmpmask = {}, *appmask; struct spdk_cpuset tmpmask = {};
const struct spdk_cpuset *appmask;
uint32_t cpu, init_cpu; uint32_t cpu, init_cpu;
pthread_mutex_init(&g_test_mutex, NULL); pthread_mutex_init(&g_test_mutex, NULL);