15cac5d9cSSasha Levin #include <stdio.h> 25cac5d9cSSasha Levin #include <string.h> 35cac5d9cSSasha Levin #include <signal.h> 45cac5d9cSSasha Levin 55cac5d9cSSasha Levin #include <kvm/util.h> 65cac5d9cSSasha Levin #include <kvm/kvm-cmd.h> 7*2a24f96dSSasha Levin #include <kvm/builtin-balloon.h> 85cac5d9cSSasha Levin #include <kvm/kvm.h> 95cac5d9cSSasha Levin 105cac5d9cSSasha Levin int kvm_cmd_balloon(int argc, const char **argv, const char *prefix) 115cac5d9cSSasha Levin { 125cac5d9cSSasha Levin int pid; 135cac5d9cSSasha Levin int amount, i; 145cac5d9cSSasha Levin int inflate = 0; 155cac5d9cSSasha Levin 165cac5d9cSSasha Levin if (argc != 3) 175cac5d9cSSasha Levin die("Usage: kvm balloon [command] [instance name] [amount]\n"); 185cac5d9cSSasha Levin 195cac5d9cSSasha Levin pid = kvm__get_pid_by_instance(argv[1]); 205cac5d9cSSasha Levin if (pid < 0) 215cac5d9cSSasha Levin die("Failed locating instance name"); 225cac5d9cSSasha Levin 235cac5d9cSSasha Levin if (strcmp(argv[0], "inflate") == 0) 245cac5d9cSSasha Levin inflate = 1; 255cac5d9cSSasha Levin else if (strcmp(argv[0], "deflate")) 265cac5d9cSSasha Levin die("command can be either 'inflate' or 'deflate'"); 275cac5d9cSSasha Levin 285cac5d9cSSasha Levin amount = atoi(argv[2]); 295cac5d9cSSasha Levin 305cac5d9cSSasha Levin for (i = 0; i < amount; i++) 315cac5d9cSSasha Levin kill(pid, inflate ? SIGKVMADDMEM : SIGKVMDELMEM); 325cac5d9cSSasha Levin 335cac5d9cSSasha Levin return 0; 345cac5d9cSSasha Levin } 35