xref: /kvmtool/builtin-stop.c (revision daf4cb5af4785979a1a4a5ad5d0c0e879a455795)
1*daf4cb5aSSasha Levin #include <kvm/util.h>
2*daf4cb5aSSasha Levin #include <kvm/kvm-cmd.h>
3*daf4cb5aSSasha Levin #include <kvm/builtin-stop.h>
4*daf4cb5aSSasha Levin #include <kvm/kvm.h>
5*daf4cb5aSSasha Levin 
6*daf4cb5aSSasha Levin #include <stdio.h>
7*daf4cb5aSSasha Levin #include <string.h>
8*daf4cb5aSSasha Levin #include <signal.h>
9*daf4cb5aSSasha Levin 
10*daf4cb5aSSasha Levin static void do_stop(const char *name, int pid)
11*daf4cb5aSSasha Levin {
12*daf4cb5aSSasha Levin 	kill(pid, SIGKVMSTOP);
13*daf4cb5aSSasha Levin }
14*daf4cb5aSSasha Levin 
15*daf4cb5aSSasha Levin int kvm_cmd_stop(int argc, const char **argv, const char *prefix)
16*daf4cb5aSSasha Levin {
17*daf4cb5aSSasha Levin 	int pid;
18*daf4cb5aSSasha Levin 
19*daf4cb5aSSasha Levin 	if (argc != 1)
20*daf4cb5aSSasha Levin 		die("Usage: kvm stop [instance name]\n");
21*daf4cb5aSSasha Levin 
22*daf4cb5aSSasha Levin 	if (strcmp(argv[0], "all") == 0) {
23*daf4cb5aSSasha Levin 		kvm__enumerate_instances(do_stop);
24*daf4cb5aSSasha Levin 		return 0;
25*daf4cb5aSSasha Levin 	}
26*daf4cb5aSSasha Levin 
27*daf4cb5aSSasha Levin 	pid = kvm__get_pid_by_instance(argv[0]);
28*daf4cb5aSSasha Levin 	if (pid < 0)
29*daf4cb5aSSasha Levin 		die("Failed locating instance name");
30*daf4cb5aSSasha Levin 
31*daf4cb5aSSasha Levin 	return kill(pid, SIGKVMSTOP);
32*daf4cb5aSSasha Levin }
33