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