xref: /kvmtool/builtin-balloon.c (revision 5cac5d9c4394e316884ea3d7b07b4adb637bab22)
1 #include <stdio.h>
2 #include <string.h>
3 #include <signal.h>
4 
5 #include <kvm/util.h>
6 #include <kvm/kvm-cmd.h>
7 #include <kvm/kvm-balloon.h>
8 #include <kvm/kvm.h>
9 
10 int kvm_cmd_balloon(int argc, const char **argv, const char *prefix)
11 {
12 	int pid;
13 	int amount, i;
14 	int inflate = 0;
15 
16 	if (argc != 3)
17 		die("Usage: kvm balloon [command] [instance name] [amount]\n");
18 
19 	pid = kvm__get_pid_by_instance(argv[1]);
20 	if (pid < 0)
21 		die("Failed locating instance name");
22 
23 	if (strcmp(argv[0], "inflate") == 0)
24 		inflate = 1;
25 	else if (strcmp(argv[0], "deflate"))
26 		die("command can be either 'inflate' or 'deflate'");
27 
28 	amount = atoi(argv[2]);
29 
30 	for (i = 0; i < amount; i++)
31 		kill(pid, inflate ? SIGKVMADDMEM : SIGKVMDELMEM);
32 
33 	return 0;
34 }
35