callback function maybe fail, so we should deal with the return value.
Signed-off-by: Liming Wang <[email protected]>
---
tools/kvm/builtin-debug.c | 7 +++----
tools/kvm/builtin-list.c | 9 ++++-----
tools/kvm/builtin-pause.c | 7 +++----
tools/kvm/builtin-resume.c | 7 +++----
tools/kvm/builtin-stop.c | 7 +++----
tools/kvm/include/kvm/kvm.h | 2 +-
tools/kvm/kvm.c | 9 ++++++---
7 files changed, 23 insertions(+), 25 deletions(-)
diff --git a/tools/kvm/builtin-debug.c b/tools/kvm/builtin-debug.c
index 153badd..4cf3b7c 100644
--- a/tools/kvm/builtin-debug.c
+++ b/tools/kvm/builtin-debug.c
@@ -7,9 +7,9 @@
#include <string.h>
#include <signal.h>
-static void do_debug(const char *name, int pid)
+static int do_debug(const char *name, int pid)
{
- kill(pid, SIGQUIT);
+ return kill(pid, SIGQUIT);
}
int kvm_cmd_debug(int argc, const char **argv, const char *prefix)
@@ -20,8 +20,7 @@ int kvm_cmd_debug(int argc, const char **argv, const char
*prefix)
die("Usage: kvm debug [instance name]\n");
if (strcmp(argv[0], "all") == 0) {
- kvm__enumerate_instances(do_debug);
- return 0;
+ return kvm__enumerate_instances(do_debug);
}
pid = kvm__get_pid_by_instance(argv[0]);
diff --git a/tools/kvm/builtin-list.c b/tools/kvm/builtin-list.c
index 89a0465..43f37f2 100644
--- a/tools/kvm/builtin-list.c
+++ b/tools/kvm/builtin-list.c
@@ -10,7 +10,7 @@
#define PROCESS_NAME "kvm"
-static void print_guest(const char *name, int pid)
+static int print_guest(const char *name, int pid)
{
char proc_name[PATH_MAX];
char *comm = NULL;
@@ -31,7 +31,7 @@ static void print_guest(const char *name, int pid)
fclose(fd);
- return;
+ return 0;
cleanup:
if (fd)
@@ -40,11 +40,10 @@ cleanup:
free(comm);
kvm__remove_pidfile(name);
+ return 0;
}
int kvm_cmd_list(int argc, const char **argv, const char *prefix)
{
- kvm__enumerate_instances(print_guest);
-
- return 0;
+ return kvm__enumerate_instances(print_guest);
}
diff --git a/tools/kvm/builtin-pause.c b/tools/kvm/builtin-pause.c
index 827b3b4..f5805e6 100644
--- a/tools/kvm/builtin-pause.c
+++ b/tools/kvm/builtin-pause.c
@@ -7,9 +7,9 @@
#include <kvm/builtin-pause.h>
#include <kvm/kvm.h>
-static void do_pause(const char *name, int pid)
+static int do_pause(const char *name, int pid)
{
- kill(pid, SIGUSR2);
+ return kill(pid, SIGUSR2);
}
int kvm_cmd_pause(int argc, const char **argv, const char *prefix)
@@ -20,8 +20,7 @@ int kvm_cmd_pause(int argc, const char **argv, const char
*prefix)
die("Usage: kvm pause [instance name]\n");
if (strcmp(argv[0], "all") == 0) {
- kvm__enumerate_instances(do_pause);
- return 0;
+ return kvm__enumerate_instances(do_pause);
}
pid = kvm__get_pid_by_instance(argv[0]);
diff --git a/tools/kvm/builtin-resume.c b/tools/kvm/builtin-resume.c
index 4a85918..a9bf6c5 100644
--- a/tools/kvm/builtin-resume.c
+++ b/tools/kvm/builtin-resume.c
@@ -7,9 +7,9 @@
#include <kvm/builtin-resume.h>
#include <kvm/kvm.h>
-static void do_resume(const char *name, int pid)
+static int do_resume(const char *name, int pid)
{
- kill(pid, SIGKVMRESUME);
+ return kill(pid, SIGKVMRESUME);
}
int kvm_cmd_resume(int argc, const char **argv, const char *prefix)
@@ -20,8 +20,7 @@ int kvm_cmd_resume(int argc, const char **argv, const char
*prefix)
die("Usage: kvm resume [instance name]\n");
if (strcmp(argv[0], "all") == 0) {
- kvm__enumerate_instances(do_resume);
- return 0;
+ return kvm__enumerate_instances(do_resume);
}
pid = kvm__get_pid_by_instance(argv[0]);
diff --git a/tools/kvm/builtin-stop.c b/tools/kvm/builtin-stop.c
index 7dd2015..46be393 100644
--- a/tools/kvm/builtin-stop.c
+++ b/tools/kvm/builtin-stop.c
@@ -7,9 +7,9 @@
#include <string.h>
#include <signal.h>
-static void do_stop(const char *name, int pid)
+static int do_stop(const char *name, int pid)
{
- kill(pid, SIGKVMSTOP);
+ return kill(pid, SIGKVMSTOP);
}
int kvm_cmd_stop(int argc, const char **argv, const char *prefix)
@@ -20,8 +20,7 @@ int kvm_cmd_stop(int argc, const char **argv, const char
*prefix)
die("Usage: kvm stop [instance name]\n");
if (strcmp(argv[0], "all") == 0) {
- kvm__enumerate_instances(do_stop);
- return 0;
+ return kvm__enumerate_instances(do_stop);
}
pid = kvm__get_pid_by_instance(argv[0]);
diff --git a/tools/kvm/include/kvm/kvm.h b/tools/kvm/include/kvm/kvm.h
index 4f12d11..1cbe3c7 100644
--- a/tools/kvm/include/kvm/kvm.h
+++ b/tools/kvm/include/kvm/kvm.h
@@ -72,7 +72,7 @@ void kvm__pause(void);
void kvm__continue(void);
void kvm__notify_paused(void);
int kvm__get_pid_by_instance(const char *name);
-int kvm__enumerate_instances(void (*callback)(const char *name, int pid));
+int kvm__enumerate_instances(int (*callback)(const char *name, int pid));
void kvm__remove_pidfile(const char *name);
/*
diff --git a/tools/kvm/kvm.c b/tools/kvm/kvm.c
index 107a922..740851d 100644
--- a/tools/kvm/kvm.c
+++ b/tools/kvm/kvm.c
@@ -164,12 +164,13 @@ int kvm__get_pid_by_instance(const char *name)
return pid;
}
-int kvm__enumerate_instances(void (*callback)(const char *name, int pid))
+int kvm__enumerate_instances(int (*callback)(const char *name, int pid))
{
char full_name[PATH_MAX];
int pid;
DIR *dir;
struct dirent entry, *result;
+ int ret = 0;
sprintf(full_name, "%s/%s", HOME_DIR, KVM_PID_FILE_PATH);
dir = opendir(full_name);
@@ -181,13 +182,15 @@ int kvm__enumerate_instances(void (*callback)(const char
*name, int pid))
if (entry.d_type == DT_REG) {
entry.d_name[strlen(entry.d_name)-4] = 0;
pid = kvm__get_pid_by_instance(entry.d_name);
- callback(entry.d_name, pid);
+ ret = callback(entry.d_name, pid);
+ if (ret < 0)
+ break;
}
}
closedir(dir);
- return 0;
+ return ret;
}
void kvm__delete(struct kvm *kvm)
--
1.7.0.4
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html