xref: /dpdk/examples/vm_power_manager/guest_cli/main.c (revision 3998e2a07220844d3f3c17f76a781ced3efe0de0)
1*3998e2a0SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause
2*3998e2a0SBruce Richardson  * Copyright(c) 2010-2014 Intel Corporation
3f5e5c334SAlan Carew  */
4f5e5c334SAlan Carew 
5f5e5c334SAlan Carew /*
6f5e5c334SAlan Carew #include <stdio.h>
7f5e5c334SAlan Carew #include <string.h>
8f5e5c334SAlan Carew #include <stdint.h>
9f5e5c334SAlan Carew #include <sys/epoll.h>
10f5e5c334SAlan Carew #include <fcntl.h>
11f5e5c334SAlan Carew #include <unistd.h>
12f5e5c334SAlan Carew #include <stdlib.h>
13f5e5c334SAlan Carew #include <errno.h>
14f5e5c334SAlan Carew */
15f5e5c334SAlan Carew #include <signal.h>
16f5e5c334SAlan Carew 
17f5e5c334SAlan Carew #include <rte_lcore.h>
18f5e5c334SAlan Carew #include <rte_power.h>
19f5e5c334SAlan Carew #include <rte_debug.h>
20f5e5c334SAlan Carew 
21f5e5c334SAlan Carew #include "vm_power_cli_guest.h"
22f5e5c334SAlan Carew 
23f5e5c334SAlan Carew static void
24f5e5c334SAlan Carew sig_handler(int signo)
25f5e5c334SAlan Carew {
26f5e5c334SAlan Carew 	printf("Received signal %d, exiting...\n", signo);
27f5e5c334SAlan Carew 	unsigned lcore_id;
28f5e5c334SAlan Carew 
29f5e5c334SAlan Carew 	RTE_LCORE_FOREACH(lcore_id) {
30f5e5c334SAlan Carew 		rte_power_exit(lcore_id);
31f5e5c334SAlan Carew 	}
32f5e5c334SAlan Carew 
33f5e5c334SAlan Carew }
34f5e5c334SAlan Carew 
35f5e5c334SAlan Carew int
3698a16481SDavid Marchand main(int argc, char **argv)
37f5e5c334SAlan Carew {
38f5e5c334SAlan Carew 	int ret;
39f5e5c334SAlan Carew 	unsigned lcore_id;
40f5e5c334SAlan Carew 
41f5e5c334SAlan Carew 	ret = rte_eal_init(argc, argv);
42f5e5c334SAlan Carew 	if (ret < 0)
43f5e5c334SAlan Carew 		rte_panic("Cannot init EAL\n");
44f5e5c334SAlan Carew 
45f5e5c334SAlan Carew 	signal(SIGINT, sig_handler);
46f5e5c334SAlan Carew 	signal(SIGTERM, sig_handler);
47f5e5c334SAlan Carew 
48f5e5c334SAlan Carew 	rte_power_set_env(PM_ENV_KVM_VM);
49f5e5c334SAlan Carew 	RTE_LCORE_FOREACH(lcore_id) {
50f5e5c334SAlan Carew 		rte_power_init(lcore_id);
51f5e5c334SAlan Carew 	}
52f5e5c334SAlan Carew 	run_cli(NULL);
53f5e5c334SAlan Carew 
54f5e5c334SAlan Carew 	return 0;
55f5e5c334SAlan Carew }
56