1d30ea906Sjfb8856606 /* SPDX-License-Identifier: BSD-3-Clause 2d30ea906Sjfb8856606 * Copyright(c) 2010-2014 Intel Corporation 3a9643ea8Slogwang */ 4a9643ea8Slogwang 5a9643ea8Slogwang #include <stdio.h> 6a9643ea8Slogwang #include <string.h> 7a9643ea8Slogwang #include <stdint.h> 8a9643ea8Slogwang #include <errno.h> 9a9643ea8Slogwang #include <sys/queue.h> 10a9643ea8Slogwang 11a9643ea8Slogwang #include <rte_memory.h> 12a9643ea8Slogwang #include <rte_launch.h> 13a9643ea8Slogwang #include <rte_eal.h> 14a9643ea8Slogwang #include <rte_per_lcore.h> 15a9643ea8Slogwang #include <rte_lcore.h> 16a9643ea8Slogwang #include <rte_debug.h> 17a9643ea8Slogwang 18a9643ea8Slogwang static int lcore_hello(__rte_unused void * arg)19*2d9fd380Sjfb8856606lcore_hello(__rte_unused void *arg) 20a9643ea8Slogwang { 21a9643ea8Slogwang unsigned lcore_id; 22a9643ea8Slogwang lcore_id = rte_lcore_id(); 23a9643ea8Slogwang printf("hello from core %u\n", lcore_id); 24a9643ea8Slogwang return 0; 25a9643ea8Slogwang } 26a9643ea8Slogwang 27a9643ea8Slogwang int main(int argc,char ** argv)28a9643ea8Slogwangmain(int argc, char **argv) 29a9643ea8Slogwang { 30a9643ea8Slogwang int ret; 31a9643ea8Slogwang unsigned lcore_id; 32a9643ea8Slogwang 33a9643ea8Slogwang ret = rte_eal_init(argc, argv); 34a9643ea8Slogwang if (ret < 0) 35a9643ea8Slogwang rte_panic("Cannot init EAL\n"); 36a9643ea8Slogwang 37*2d9fd380Sjfb8856606 /* call lcore_hello() on every worker lcore */ 38*2d9fd380Sjfb8856606 RTE_LCORE_FOREACH_WORKER(lcore_id) { 39a9643ea8Slogwang rte_eal_remote_launch(lcore_hello, NULL, lcore_id); 40a9643ea8Slogwang } 41a9643ea8Slogwang 42*2d9fd380Sjfb8856606 /* call it on main lcore too */ 43a9643ea8Slogwang lcore_hello(NULL); 44a9643ea8Slogwang 45a9643ea8Slogwang rte_eal_mp_wait_lcore(); 46a9643ea8Slogwang return 0; 47a9643ea8Slogwang } 48