event: Eliminate reactor mask
The DPDK mask and the reactor mask are always the same. Change-Id: I83d3ab87cdfb405574f6472cfc222d3f311abdb1 Signed-off-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
84230409fd
commit
c80454a283
@ -45,7 +45,7 @@ struct spdk_event {
|
|||||||
void *arg2;
|
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);
|
int spdk_reactors_fini(void);
|
||||||
|
|
||||||
void spdk_reactors_start(void);
|
void spdk_reactors_start(void);
|
||||||
|
@ -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_mask will be 0x1 which will enable core 0 to run one
|
||||||
* reactor.
|
* 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");
|
fprintf(stderr, "Invalid reactor mask.\n");
|
||||||
spdk_conf_free(g_spdk_app.config);
|
spdk_conf_free(g_spdk_app.config);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
@ -123,7 +123,6 @@ struct spdk_reactor {
|
|||||||
} __attribute__((aligned(64)));
|
} __attribute__((aligned(64)));
|
||||||
|
|
||||||
static struct spdk_reactor g_reactors[RTE_MAX_LCORE];
|
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;
|
static enum spdk_reactor_state g_reactor_state = SPDK_REACTOR_STATE_INVALID;
|
||||||
|
|
||||||
@ -483,45 +482,17 @@ spdk_app_parse_core_mask(const char *mask, uint64_t *cpumask)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
spdk_reactor_parse_mask(const char *mask)
|
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64_t
|
uint64_t
|
||||||
spdk_app_get_core_mask(void)
|
spdk_app_get_core_mask(void)
|
||||||
{
|
{
|
||||||
return g_reactor_mask;
|
unsigned lcore;
|
||||||
|
uint64_t mask = 0;
|
||||||
|
|
||||||
|
RTE_LCORE_FOREACH(lcore) {
|
||||||
|
mask |= 1ULL << lcore;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -533,10 +504,8 @@ spdk_reactor_get_socket_mask(void)
|
|||||||
uint64_t socket_info = 0;
|
uint64_t socket_info = 0;
|
||||||
|
|
||||||
RTE_LCORE_FOREACH(i) {
|
RTE_LCORE_FOREACH(i) {
|
||||||
if (((1ULL << i) & g_reactor_mask)) {
|
socket_id = spdk_env_get_socket_id(i);
|
||||||
socket_id = spdk_env_get_socket_id(i);
|
socket_info |= (1ULL << socket_id);
|
||||||
socket_info |= (1ULL << socket_id);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return socket_info;
|
return socket_info;
|
||||||
@ -553,10 +522,8 @@ spdk_reactors_start(void)
|
|||||||
g_reactor_state = SPDK_REACTOR_STATE_RUNNING;
|
g_reactor_state = SPDK_REACTOR_STATE_RUNNING;
|
||||||
|
|
||||||
RTE_LCORE_FOREACH_SLAVE(i) {
|
RTE_LCORE_FOREACH_SLAVE(i) {
|
||||||
if (((1ULL << i) & spdk_app_get_core_mask())) {
|
reactor = spdk_reactor_get(i);
|
||||||
reactor = spdk_reactor_get(i);
|
spdk_reactor_start(reactor);
|
||||||
spdk_reactor_start(reactor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Start the master reactor */
|
/* Start the master reactor */
|
||||||
@ -574,22 +541,14 @@ void spdk_reactors_stop(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
spdk_reactors_init(const char *mask, unsigned int max_delay_us)
|
spdk_reactors_init(unsigned int max_delay_us)
|
||||||
{
|
{
|
||||||
uint32_t i, j;
|
uint32_t i, j;
|
||||||
int rc;
|
|
||||||
struct spdk_reactor *reactor;
|
struct spdk_reactor *reactor;
|
||||||
uint64_t socket_mask = 0x0;
|
uint64_t socket_mask = 0x0;
|
||||||
uint8_t socket_count = 0;
|
uint8_t socket_count = 0;
|
||||||
char mempool_name[32];
|
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();
|
socket_mask = spdk_reactor_get_socket_mask();
|
||||||
printf("Occupied cpu socket mask is 0x%lx\n", socket_mask);
|
printf("Occupied cpu socket mask is 0x%lx\n", socket_mask);
|
||||||
|
|
||||||
@ -639,15 +598,13 @@ spdk_reactors_init(const char *mask, unsigned int max_delay_us)
|
|||||||
}
|
}
|
||||||
|
|
||||||
RTE_LCORE_FOREACH(i) {
|
RTE_LCORE_FOREACH(i) {
|
||||||
if (((1ULL << i) & spdk_app_get_core_mask())) {
|
reactor = spdk_reactor_get(i);
|
||||||
reactor = spdk_reactor_get(i);
|
spdk_reactor_construct(reactor, i, max_delay_us);
|
||||||
spdk_reactor_construct(reactor, i, max_delay_us);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_reactor_state = SPDK_REACTOR_STATE_INITIALIZED;
|
g_reactor_state = SPDK_REACTOR_STATE_INITIALIZED;
|
||||||
|
|
||||||
return rc;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -658,11 +615,9 @@ spdk_reactors_fini(void)
|
|||||||
struct spdk_reactor *reactor;
|
struct spdk_reactor *reactor;
|
||||||
|
|
||||||
RTE_LCORE_FOREACH(i) {
|
RTE_LCORE_FOREACH(i) {
|
||||||
if (((1ULL << i) & spdk_app_get_core_mask())) {
|
reactor = spdk_reactor_get(i);
|
||||||
reactor = spdk_reactor_get(i);
|
if (reactor->events != NULL) {
|
||||||
if (reactor->events != NULL) {
|
rte_ring_free(reactor->events);
|
||||||
rte_ring_free(reactor->events);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user