src/dpdk/lib/librte_eal/common/eal_common_launch.c
int
rte_eal_mp_remote_launch(int (*f)(void *), void *arg,
			 enum rte_rmt_call_main_t call_main)
{
	int lcore_id;
	int main_lcore = rte_get_main_lcore();

	/* check state of lcores */
	RTE_LCORE_FOREACH_WORKER(lcore_id) {
		if (lcore_config[lcore_id].state != WAIT)
			return -EBUSY;
	}

	/* send messages to cores */
	RTE_LCORE_FOREACH_WORKER(lcore_id) {
		rte_eal_remote_launch(f, arg, lcore_id);
	}

	if (call_main == CALL_MAIN) {
		lcore_config[main_lcore].ret = f(arg);
		lcore_config[main_lcore].state = FINISHED;
	}

	return 0;
}
/*
 * Check that every WORKER lcores are in WAIT state, then call
 * rte_eal_remote_launch() for all of them. If call_main is true
 * (set to CALL_MAIN), also call the function on the main lcore.
 */
Check that every WORKER lcores are in WAIT state, then call
rte_eal_remote_launch() for all of them. If call_main is true
(set to CALL_MAIN), also call the function on the main lcore.
Check that every WORKER lcores are in WAIT state then call rte_eal_remote_launch () for all of them . If call_main is true ( set to CALL_MAIN ) also call the function on the main lcore .
int
rte_eal_mp_remote_launch(int (*f)(void *), void *arg,
			 enum rte_rmt_call_main_t call_main)
{
	int lcore_id;
	int main_lcore = rte_get_main_lcore();
	RTE_LCORE_FOREACH_WORKER(lcore_id) {
		if (lcore_config[lcore_id].state != WAIT)
			return -EBUSY;
	}
	RTE_LCORE_FOREACH_WORKER(lcore_id) {
		rte_eal_remote_launch(f, arg, lcore_id);
	}
	if (call_main == CALL_MAIN) {
		lcore_config[main_lcore].ret = f(arg);
		lcore_config[main_lcore].state = FINISHED;
	}
	return 0;
}
int rte_eal_mp_remote_launch ( int ( * f ) ( void * ) , void * arg , enum rte_rmt_call_main_t call_main ) { int lcore_id ; int main_lcore = rte_get_main_lcore ( ) ; RTE_LCORE_FOREACH_WORKER ( lcore_id ) { if ( lcore_config [ lcore_id ] . state != WAIT ) return - EBUSY ; } RTE_LCORE_FOREACH_WORKER ( lcore_id ) { rte_eal_remote_launch ( f , arg , lcore_id ) ; } if ( call_main == CALL_MAIN ) { lcore_config [ main_lcore ] . ret = f ( arg ) ; lcore_config [ main_lcore ] . state = FINISHED ; } return 0 ; }
Check that every WORKER lcores are in WAIT state, then call
 rte_eal_remote_launch() for all of them.
Check that every WORKER lcores are in WAIT state then call rte_eal_remote_launch () for all of them .
/* check state of lcores */ /* send messages to cores */