xref: /f-stack/dpdk/examples/helloworld/main.c (revision 2d9fd380)
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*2d9fd380Sjfb8856606 lcore_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)28a9643ea8Slogwang main(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