Loading include/spdk_internal/event.h +1 −1 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ struct spdk_event { void *arg2; }; int spdk_reactors_init(const char *mask, unsigned int max_delay_us); int spdk_reactors_init(unsigned int max_delay_us); int spdk_reactors_fini(void); void spdk_reactors_start(void); Loading lib/event/app.c +1 −1 Original line number Diff line number Diff line Loading @@ -332,7 +332,7 @@ spdk_app_init(struct spdk_app_opts *opts) * reactor_mask will be 0x1 which will enable core 0 to run one * reactor. */ if (spdk_reactors_init(opts->reactor_mask, opts->max_delay_us)) { if (spdk_reactors_init(opts->max_delay_us)) { fprintf(stderr, "Invalid reactor mask.\n"); spdk_conf_free(g_spdk_app.config); exit(EXIT_FAILURE); Loading lib/event/reactor.c +18 −63 Original line number Diff line number Diff line Loading @@ -123,7 +123,6 @@ struct spdk_reactor { } __attribute__((aligned(64))); static struct spdk_reactor g_reactors[RTE_MAX_LCORE]; static uint64_t g_reactor_mask = 0; static enum spdk_reactor_state g_reactor_state = SPDK_REACTOR_STATE_INVALID; Loading Loading @@ -483,45 +482,17 @@ spdk_app_parse_core_mask(const char *mask, uint64_t *cpumask) return 0; } static int spdk_reactor_parse_mask(const char *mask) uint64_t spdk_app_get_core_mask(void) { int i; int ret = 0; uint32_t master_core = rte_get_master_lcore(); if (g_reactor_state >= SPDK_REACTOR_STATE_INITIALIZED) { SPDK_ERRLOG("cannot set reactor mask after application has started\n"); return -1; } g_reactor_mask = 0; if (mask == NULL) { /* No mask specified so use the same mask as DPDK. */ RTE_LCORE_FOREACH(i) { g_reactor_mask |= (1ULL << i); } } else { ret = spdk_app_parse_core_mask(mask, &g_reactor_mask); if (ret != 0) { SPDK_ERRLOG("reactor mask %s specified on command line " "is invalid\n", mask); return ret; } if (!(g_reactor_mask & (1ULL << master_core))) { SPDK_ERRLOG("master_core %d must be set in core mask\n", master_core); return -1; } } unsigned lcore; uint64_t mask = 0; return 0; RTE_LCORE_FOREACH(lcore) { mask |= 1ULL << lcore; } uint64_t spdk_app_get_core_mask(void) { return g_reactor_mask; return mask; } Loading @@ -533,11 +504,9 @@ spdk_reactor_get_socket_mask(void) uint64_t socket_info = 0; RTE_LCORE_FOREACH(i) { if (((1ULL << i) & g_reactor_mask)) { socket_id = spdk_env_get_socket_id(i); socket_info |= (1ULL << socket_id); } } return socket_info; } Loading @@ -553,11 +522,9 @@ spdk_reactors_start(void) g_reactor_state = SPDK_REACTOR_STATE_RUNNING; RTE_LCORE_FOREACH_SLAVE(i) { if (((1ULL << i) & spdk_app_get_core_mask())) { reactor = spdk_reactor_get(i); spdk_reactor_start(reactor); } } /* Start the master reactor */ reactor = spdk_reactor_get(rte_get_master_lcore()); Loading @@ -574,22 +541,14 @@ void spdk_reactors_stop(void) } int spdk_reactors_init(const char *mask, unsigned int max_delay_us) spdk_reactors_init(unsigned int max_delay_us) { uint32_t i, j; int rc; struct spdk_reactor *reactor; uint64_t socket_mask = 0x0; uint8_t socket_count = 0; char mempool_name[32]; rc = spdk_reactor_parse_mask(mask); if (rc < 0) { return rc; } printf("Occupied cpu core mask is 0x%lx\n", spdk_app_get_core_mask()); socket_mask = spdk_reactor_get_socket_mask(); printf("Occupied cpu socket mask is 0x%lx\n", socket_mask); Loading Loading @@ -639,15 +598,13 @@ spdk_reactors_init(const char *mask, unsigned int max_delay_us) } RTE_LCORE_FOREACH(i) { if (((1ULL << i) & spdk_app_get_core_mask())) { reactor = spdk_reactor_get(i); spdk_reactor_construct(reactor, i, max_delay_us); } } g_reactor_state = SPDK_REACTOR_STATE_INITIALIZED; return rc; return 0; } int Loading @@ -658,13 +615,11 @@ spdk_reactors_fini(void) struct spdk_reactor *reactor; RTE_LCORE_FOREACH(i) { if (((1ULL << i) & spdk_app_get_core_mask())) { reactor = spdk_reactor_get(i); if (reactor->events != NULL) { rte_ring_free(reactor->events); } } } socket_mask = spdk_reactor_get_socket_mask(); for (i = 0; i < SPDK_MAX_SOCKET; i++) { Loading Loading
include/spdk_internal/event.h +1 −1 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ struct spdk_event { void *arg2; }; int spdk_reactors_init(const char *mask, unsigned int max_delay_us); int spdk_reactors_init(unsigned int max_delay_us); int spdk_reactors_fini(void); void spdk_reactors_start(void); Loading
lib/event/app.c +1 −1 Original line number Diff line number Diff line Loading @@ -332,7 +332,7 @@ spdk_app_init(struct spdk_app_opts *opts) * reactor_mask will be 0x1 which will enable core 0 to run one * reactor. */ if (spdk_reactors_init(opts->reactor_mask, opts->max_delay_us)) { if (spdk_reactors_init(opts->max_delay_us)) { fprintf(stderr, "Invalid reactor mask.\n"); spdk_conf_free(g_spdk_app.config); exit(EXIT_FAILURE); Loading
lib/event/reactor.c +18 −63 Original line number Diff line number Diff line Loading @@ -123,7 +123,6 @@ struct spdk_reactor { } __attribute__((aligned(64))); static struct spdk_reactor g_reactors[RTE_MAX_LCORE]; static uint64_t g_reactor_mask = 0; static enum spdk_reactor_state g_reactor_state = SPDK_REACTOR_STATE_INVALID; Loading Loading @@ -483,45 +482,17 @@ spdk_app_parse_core_mask(const char *mask, uint64_t *cpumask) return 0; } static int spdk_reactor_parse_mask(const char *mask) uint64_t spdk_app_get_core_mask(void) { int i; int ret = 0; uint32_t master_core = rte_get_master_lcore(); if (g_reactor_state >= SPDK_REACTOR_STATE_INITIALIZED) { SPDK_ERRLOG("cannot set reactor mask after application has started\n"); return -1; } g_reactor_mask = 0; if (mask == NULL) { /* No mask specified so use the same mask as DPDK. */ RTE_LCORE_FOREACH(i) { g_reactor_mask |= (1ULL << i); } } else { ret = spdk_app_parse_core_mask(mask, &g_reactor_mask); if (ret != 0) { SPDK_ERRLOG("reactor mask %s specified on command line " "is invalid\n", mask); return ret; } if (!(g_reactor_mask & (1ULL << master_core))) { SPDK_ERRLOG("master_core %d must be set in core mask\n", master_core); return -1; } } unsigned lcore; uint64_t mask = 0; return 0; RTE_LCORE_FOREACH(lcore) { mask |= 1ULL << lcore; } uint64_t spdk_app_get_core_mask(void) { return g_reactor_mask; return mask; } Loading @@ -533,11 +504,9 @@ spdk_reactor_get_socket_mask(void) uint64_t socket_info = 0; RTE_LCORE_FOREACH(i) { if (((1ULL << i) & g_reactor_mask)) { socket_id = spdk_env_get_socket_id(i); socket_info |= (1ULL << socket_id); } } return socket_info; } Loading @@ -553,11 +522,9 @@ spdk_reactors_start(void) g_reactor_state = SPDK_REACTOR_STATE_RUNNING; RTE_LCORE_FOREACH_SLAVE(i) { if (((1ULL << i) & spdk_app_get_core_mask())) { reactor = spdk_reactor_get(i); spdk_reactor_start(reactor); } } /* Start the master reactor */ reactor = spdk_reactor_get(rte_get_master_lcore()); Loading @@ -574,22 +541,14 @@ void spdk_reactors_stop(void) } int spdk_reactors_init(const char *mask, unsigned int max_delay_us) spdk_reactors_init(unsigned int max_delay_us) { uint32_t i, j; int rc; struct spdk_reactor *reactor; uint64_t socket_mask = 0x0; uint8_t socket_count = 0; char mempool_name[32]; rc = spdk_reactor_parse_mask(mask); if (rc < 0) { return rc; } printf("Occupied cpu core mask is 0x%lx\n", spdk_app_get_core_mask()); socket_mask = spdk_reactor_get_socket_mask(); printf("Occupied cpu socket mask is 0x%lx\n", socket_mask); Loading Loading @@ -639,15 +598,13 @@ spdk_reactors_init(const char *mask, unsigned int max_delay_us) } RTE_LCORE_FOREACH(i) { if (((1ULL << i) & spdk_app_get_core_mask())) { reactor = spdk_reactor_get(i); spdk_reactor_construct(reactor, i, max_delay_us); } } g_reactor_state = SPDK_REACTOR_STATE_INITIALIZED; return rc; return 0; } int Loading @@ -658,13 +615,11 @@ spdk_reactors_fini(void) struct spdk_reactor *reactor; RTE_LCORE_FOREACH(i) { if (((1ULL << i) & spdk_app_get_core_mask())) { reactor = spdk_reactor_get(i); if (reactor->events != NULL) { rte_ring_free(reactor->events); } } } socket_mask = spdk_reactor_get_socket_mask(); for (i = 0; i < SPDK_MAX_SOCKET; i++) { Loading