env: Remove all use of RTE_LCORE_FOREACH
Replace with an env abstraction. Change-Id: I706374d265a270890e1f3ca920a10a0dc09624b0 Signed-off-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
c80454a283
commit
7f7c03a935
@ -160,20 +160,20 @@ ioat_done(void *cb_arg)
|
||||
static int
|
||||
register_workers(void)
|
||||
{
|
||||
unsigned lcore;
|
||||
uint32_t i;
|
||||
struct worker_thread *worker;
|
||||
|
||||
g_workers = NULL;
|
||||
g_num_workers = 0;
|
||||
|
||||
RTE_LCORE_FOREACH(lcore) {
|
||||
SPDK_ENV_FOREACH_CORE(i) {
|
||||
worker = calloc(1, sizeof(*worker));
|
||||
if (worker == NULL) {
|
||||
fprintf(stderr, "Unable to allocate worker\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
worker->lcore = lcore;
|
||||
worker->lcore = i;
|
||||
worker->next = g_workers;
|
||||
g_workers = worker;
|
||||
g_num_workers++;
|
||||
|
@ -438,7 +438,7 @@ get_next_chan(void)
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
unsigned lcore_id;
|
||||
uint32_t i, current_core;
|
||||
struct thread_entry threads[RTE_MAX_LCORE] = {};
|
||||
int rc;
|
||||
|
||||
@ -453,21 +453,27 @@ main(int argc, char **argv)
|
||||
dump_user_config(&g_user_config);
|
||||
|
||||
g_next_device = TAILQ_FIRST(&g_devices);
|
||||
RTE_LCORE_FOREACH_SLAVE(lcore_id) {
|
||||
threads[lcore_id].chan = get_next_chan();
|
||||
rte_eal_remote_launch(work_fn, &threads[lcore_id], lcore_id);
|
||||
|
||||
current_core = spdk_env_get_current_core();
|
||||
SPDK_ENV_FOREACH_CORE(i) {
|
||||
if (i != current_core) {
|
||||
threads[i].chan = get_next_chan();
|
||||
rte_eal_remote_launch(work_fn, &threads[i], i);
|
||||
}
|
||||
}
|
||||
|
||||
threads[rte_get_master_lcore()].chan = get_next_chan();
|
||||
if (work_fn(&threads[rte_get_master_lcore()]) != 0) {
|
||||
threads[current_core].chan = get_next_chan();
|
||||
if (work_fn(&threads[current_core]) != 0) {
|
||||
rc = 1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
RTE_LCORE_FOREACH_SLAVE(lcore_id) {
|
||||
if (rte_eal_wait_lcore(lcore_id) != 0) {
|
||||
rc = 1;
|
||||
goto cleanup;
|
||||
SPDK_ENV_FOREACH_CORE(i) {
|
||||
if (i != current_core) {
|
||||
if (rte_eal_wait_lcore(i) != 0) {
|
||||
rc = 1;
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -825,21 +825,21 @@ parse_args(int argc, char **argv)
|
||||
static int
|
||||
register_workers(void)
|
||||
{
|
||||
unsigned lcore;
|
||||
uint32_t i;
|
||||
struct worker_thread *worker;
|
||||
enum spdk_nvme_qprio qprio = SPDK_NVME_QPRIO_URGENT;
|
||||
|
||||
g_workers = NULL;
|
||||
g_arbitration.num_workers = 0;
|
||||
|
||||
RTE_LCORE_FOREACH(lcore) {
|
||||
SPDK_ENV_FOREACH_CORE(i) {
|
||||
worker = calloc(1, sizeof(*worker));
|
||||
if (worker == NULL) {
|
||||
fprintf(stderr, "Unable to allocate worker\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
worker->lcore = lcore;
|
||||
worker->lcore = i;
|
||||
worker->next = g_workers;
|
||||
g_workers = worker;
|
||||
g_arbitration.num_workers++;
|
||||
|
@ -987,20 +987,20 @@ parse_args(int argc, char **argv)
|
||||
static int
|
||||
register_workers(void)
|
||||
{
|
||||
unsigned lcore;
|
||||
uint32_t i;
|
||||
struct worker_thread *worker;
|
||||
|
||||
g_workers = NULL;
|
||||
g_num_workers = 0;
|
||||
|
||||
RTE_LCORE_FOREACH(lcore) {
|
||||
SPDK_ENV_FOREACH_CORE(i) {
|
||||
worker = calloc(1, sizeof(*worker));
|
||||
if (worker == NULL) {
|
||||
fprintf(stderr, "Unable to allocate worker\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
worker->lcore = lcore;
|
||||
worker->lcore = i;
|
||||
worker->next = g_workers;
|
||||
g_workers = worker;
|
||||
g_num_workers++;
|
||||
|
@ -182,6 +182,11 @@ uint32_t spdk_env_get_first_core(void);
|
||||
*/
|
||||
uint32_t spdk_env_get_next_core(uint32_t prev_core);
|
||||
|
||||
#define SPDK_ENV_FOREACH_CORE(i) \
|
||||
for (i = spdk_env_get_first_core(); \
|
||||
i < UINT32_MAX; \
|
||||
i = spdk_env_get_next_core(i))
|
||||
|
||||
/**
|
||||
* \brief Return the socket ID for the given core.
|
||||
*/
|
||||
|
@ -485,11 +485,11 @@ spdk_app_parse_core_mask(const char *mask, uint64_t *cpumask)
|
||||
uint64_t
|
||||
spdk_app_get_core_mask(void)
|
||||
{
|
||||
unsigned lcore;
|
||||
uint32_t i;
|
||||
uint64_t mask = 0;
|
||||
|
||||
RTE_LCORE_FOREACH(lcore) {
|
||||
mask |= 1ULL << lcore;
|
||||
SPDK_ENV_FOREACH_CORE(i) {
|
||||
mask |= 1ULL << i;
|
||||
}
|
||||
|
||||
return mask;
|
||||
@ -499,11 +499,11 @@ spdk_app_get_core_mask(void)
|
||||
static uint64_t
|
||||
spdk_reactor_get_socket_mask(void)
|
||||
{
|
||||
int i;
|
||||
uint32_t i;
|
||||
uint32_t socket_id;
|
||||
uint64_t socket_info = 0;
|
||||
|
||||
RTE_LCORE_FOREACH(i) {
|
||||
SPDK_ENV_FOREACH_CORE(i) {
|
||||
socket_id = spdk_env_get_socket_id(i);
|
||||
socket_info |= (1ULL << socket_id);
|
||||
}
|
||||
@ -515,19 +515,22 @@ void
|
||||
spdk_reactors_start(void)
|
||||
{
|
||||
struct spdk_reactor *reactor;
|
||||
uint32_t i;
|
||||
uint32_t i, current_core;
|
||||
|
||||
assert(rte_get_master_lcore() == rte_lcore_id());
|
||||
|
||||
g_reactor_state = SPDK_REACTOR_STATE_RUNNING;
|
||||
|
||||
RTE_LCORE_FOREACH_SLAVE(i) {
|
||||
reactor = spdk_reactor_get(i);
|
||||
spdk_reactor_start(reactor);
|
||||
current_core = spdk_env_get_current_core();
|
||||
SPDK_ENV_FOREACH_CORE(i) {
|
||||
if (i != current_core) {
|
||||
reactor = spdk_reactor_get(i);
|
||||
spdk_reactor_start(reactor);
|
||||
}
|
||||
}
|
||||
|
||||
/* Start the master reactor */
|
||||
reactor = spdk_reactor_get(rte_get_master_lcore());
|
||||
reactor = spdk_reactor_get(current_core);
|
||||
spdk_reactor_start(reactor);
|
||||
|
||||
rte_eal_mp_wait_lcore();
|
||||
@ -597,7 +600,7 @@ spdk_reactors_init(unsigned int max_delay_us)
|
||||
}
|
||||
}
|
||||
|
||||
RTE_LCORE_FOREACH(i) {
|
||||
SPDK_ENV_FOREACH_CORE(i) {
|
||||
reactor = spdk_reactor_get(i);
|
||||
spdk_reactor_construct(reactor, i, max_delay_us);
|
||||
}
|
||||
@ -614,7 +617,7 @@ spdk_reactors_fini(void)
|
||||
uint64_t socket_mask;
|
||||
struct spdk_reactor *reactor;
|
||||
|
||||
RTE_LCORE_FOREACH(i) {
|
||||
SPDK_ENV_FOREACH_CORE(i) {
|
||||
reactor = spdk_reactor_get(i);
|
||||
if (reactor->events != NULL) {
|
||||
rte_ring_free(reactor->events);
|
||||
|
@ -476,7 +476,7 @@ performance_statistics_thread(void *arg)
|
||||
static void
|
||||
bdevperf_run(void *arg1, void *arg2)
|
||||
{
|
||||
int i;
|
||||
uint32_t i;
|
||||
struct io_target *target;
|
||||
struct spdk_event *event;
|
||||
|
||||
@ -490,14 +490,12 @@ bdevperf_run(void *arg1, void *arg2)
|
||||
}
|
||||
|
||||
/* Send events to start all I/O */
|
||||
RTE_LCORE_FOREACH(i) {
|
||||
if (spdk_app_get_core_mask() & (1ULL << i)) {
|
||||
target = head[i];
|
||||
if (target != NULL) {
|
||||
event = spdk_event_allocate(target->lcore, bdevperf_submit_on_core,
|
||||
target, NULL);
|
||||
spdk_event_call(event);
|
||||
}
|
||||
SPDK_ENV_FOREACH_CORE(i) {
|
||||
target = head[i];
|
||||
if (target != NULL) {
|
||||
event = spdk_event_allocate(target->lcore, bdevperf_submit_on_core,
|
||||
target, NULL);
|
||||
spdk_event_call(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ performance_dump(int io_time)
|
||||
uint32_t i;
|
||||
|
||||
printf("\n");
|
||||
RTE_LCORE_FOREACH(i) {
|
||||
SPDK_ENV_FOREACH_CORE(i) {
|
||||
printf("lcore %2d: %8ju\n", i, call_count[i] / g_time_in_sec);
|
||||
}
|
||||
|
||||
@ -122,7 +122,7 @@ main(int argc, char **argv)
|
||||
{
|
||||
struct spdk_app_opts opts;
|
||||
int op;
|
||||
int i;
|
||||
uint32_t i, current_core;
|
||||
|
||||
spdk_app_opts_init(&opts);
|
||||
opts.name = "event_perf";
|
||||
@ -159,8 +159,11 @@ main(int argc, char **argv)
|
||||
fflush(stdout);
|
||||
|
||||
/* call event_work_fn on each slave lcore */
|
||||
RTE_LCORE_FOREACH_SLAVE(i) {
|
||||
rte_eal_remote_launch(event_work_fn, NULL, i);
|
||||
current_core = spdk_env_get_current_core();
|
||||
SPDK_ENV_FOREACH_CORE(i) {
|
||||
if (i != current_core) {
|
||||
rte_eal_remote_launch(event_work_fn, NULL, i);
|
||||
}
|
||||
}
|
||||
|
||||
/* call event_work_fn on lcore0 */
|
||||
|
Loading…
Reference in New Issue
Block a user