19dba6721SSasha Levin #include <kvm/util.h> 29dba6721SSasha Levin #include <kvm/kvm-cmd.h> 3*2a24f96dSSasha Levin #include <kvm/builtin-list.h> 49dba6721SSasha Levin #include <kvm/kvm.h> 59dba6721SSasha Levin 69dba6721SSasha Levin #include <stdio.h> 79dba6721SSasha Levin #include <string.h> 89dba6721SSasha Levin #include <signal.h> 91b1577dcSSasha Levin #include <fcntl.h> 101b1577dcSSasha Levin 111b1577dcSSasha Levin #define PROCESS_NAME "kvm" 129dba6721SSasha Levin 139dba6721SSasha Levin static void print_guest(const char *name, int pid) 149dba6721SSasha Levin { 151b1577dcSSasha Levin char proc_name[PATH_MAX]; 161b1577dcSSasha Levin char comm[sizeof(PROCESS_NAME)]; 171b1577dcSSasha Levin int fd; 181b1577dcSSasha Levin 191b1577dcSSasha Levin sprintf(proc_name, "/proc/%d/comm", pid); 201b1577dcSSasha Levin fd = open(proc_name, O_RDONLY); 211b1577dcSSasha Levin if (fd <= 0) 221b1577dcSSasha Levin goto cleanup; 231b1577dcSSasha Levin if (read(fd, comm, sizeof(PROCESS_NAME)) == 0) 241b1577dcSSasha Levin goto cleanup; 251b1577dcSSasha Levin if (strncmp(comm, PROCESS_NAME, strlen(PROCESS_NAME))) 261b1577dcSSasha Levin goto cleanup; 271b1577dcSSasha Levin 289dba6721SSasha Levin printf("%s (PID: %d)\n", name, pid); 291b1577dcSSasha Levin 301b1577dcSSasha Levin return; 311b1577dcSSasha Levin 321b1577dcSSasha Levin cleanup: 331b1577dcSSasha Levin kvm__remove_pidfile(name); 349dba6721SSasha Levin } 359dba6721SSasha Levin 369dba6721SSasha Levin int kvm_cmd_list(int argc, const char **argv, const char *prefix) 379dba6721SSasha Levin { 389dba6721SSasha Levin kvm__enumerate_instances(print_guest); 399dba6721SSasha Levin 409dba6721SSasha Levin return 0; 419dba6721SSasha Levin } 42