@@ -17,6 +17,11 @@ static const struct option balloon_options[] = {
OPT_END()
};
+void kvm_balloon_help(void)
+{
+ usage_with_options(balloon_usage, balloon_options);
+}
+
int kvm_cmd_balloon(int argc, const char **argv, const char *prefix)
{
int pid;
@@ -24,7 +29,7 @@ int kvm_cmd_balloon(int argc, const char **argv, const char *prefix)
int inflate = 0;
if (argc != 3)
- usage_with_options(balloon_usage, balloon_options);
+ kvm_balloon_help();
pid = kvm__get_pid_by_instance(argv[2]);
if (pid < 0)
@@ -17,6 +17,11 @@ static const struct option debug_options[] = {
OPT_END()
};
+void kvm_debug_help(void)
+{
+ usage_with_options(debug_usage, debug_options);
+}
+
static int do_debug(const char *name, int pid)
{
return kill(pid, SIGQUIT);
@@ -27,7 +32,7 @@ int kvm_cmd_debug(int argc, const char **argv, const char *prefix)
int pid;
if (argc != 1)
- usage_with_options(debug_usage, debug_options);
+ kvm_debug_help();
if (strcmp(argv[0], "all") == 0) {
return kvm__enumerate_instances(do_debug);
@@ -2,6 +2,7 @@
#include <kvm/kvm-cmd.h>
#include <kvm/builtin-list.h>
#include <kvm/kvm.h>
+#include <kvm/parse-options.h>
#include <stdio.h>
#include <string.h>
@@ -10,6 +11,20 @@
#define PROCESS_NAME "kvm"
+static const char * const list_usage[] = {
+ "kvm list",
+ NULL
+};
+
+static const struct option list_options[] = {
+ OPT_END()
+};
+
+void kvm_list_help(void)
+{
+ usage_with_options(list_usage, list_options);
+}
+
static int print_guest(const char *name, int pid)
{
char proc_name[PATH_MAX];
@@ -17,6 +17,11 @@ static const struct option pause_options[] = {
OPT_END()
};
+void kvm_pause_help(void)
+{
+ usage_with_options(pause_usage, pause_options);
+}
+
static int do_pause(const char *name, int pid)
{
return kill(pid, SIGUSR2);
@@ -27,7 +32,7 @@ int kvm_cmd_pause(int argc, const char **argv, const char *prefix)
int pid;
if (argc != 1)
- usage_with_options(pause_usage, pause_options);
+ kvm_pause_help();
if (strcmp(argv[0], "all") == 0) {
return kvm__enumerate_instances(do_pause);
@@ -17,6 +17,11 @@ static const struct option resume_options[] = {
OPT_END()
};
+void kvm_resume_help(void)
+{
+ usage_with_options(resume_usage, resume_options);
+}
+
static int do_resume(const char *name, int pid)
{
return kill(pid, SIGKVMRESUME);
@@ -27,7 +32,7 @@ int kvm_cmd_resume(int argc, const char **argv, const char *prefix)
int pid;
if (argc != 1)
- usage_with_options(resume_usage, resume_options);
+ kvm_resume_help();
if (strcmp(argv[0], "all") == 0) {
return kvm__enumerate_instances(do_resume);
@@ -17,6 +17,11 @@ static const struct option stop_options[] = {
OPT_END()
};
+void kvm_stop_help(void)
+{
+ usage_with_options(stop_usage, stop_options);
+}
+
static int do_stop(const char *name, int pid)
{
return kill(pid, SIGKVMSTOP);
@@ -27,7 +32,7 @@ int kvm_cmd_stop(int argc, const char **argv, const char *prefix)
int pid;
if (argc != 1)
- usage_with_options(stop_usage, stop_options);
+ kvm_stop_help();
if (strcmp(argv[0], "all") == 0) {
return kvm__enumerate_instances(do_stop);
@@ -2,5 +2,6 @@
#define KVM__BALLOON_H
int kvm_cmd_balloon(int argc, const char **argv, const char *prefix);
+void kvm_balloon_help(void);
#endif
@@ -2,5 +2,6 @@
#define KVM__DEBUG_H
int kvm_cmd_debug(int argc, const char **argv, const char *prefix);
+void kvm_debug_help(void);
#endif
@@ -2,5 +2,6 @@
#define KVM__LIST_H
int kvm_cmd_list(int argc, const char **argv, const char *prefix);
+void kvm_list_help(void);
#endif
@@ -2,5 +2,6 @@
#define KVM__PAUSE_H
int kvm_cmd_pause(int argc, const char **argv, const char *prefix);
+void kvm_pause_help(void);
#endif
@@ -2,5 +2,6 @@
#define KVM__RESUME_H
int kvm_cmd_resume(int argc, const char **argv, const char *prefix);
+void kvm_resume_help(void);
#endif
@@ -2,5 +2,6 @@
#define KVM__STOP_H
int kvm_cmd_stop(int argc, const char **argv, const char *prefix);
+void kvm_stop_help(void);
#endif
@@ -18,17 +18,17 @@
#include "kvm/util.h"
struct cmd_struct kvm_commands[] = {
- { "pause", kvm_cmd_pause, NULL, 0 },
- { "resume", kvm_cmd_resume, NULL, 0 },
- { "debug", kvm_cmd_debug, NULL, 0 },
- { "balloon", kvm_cmd_balloon, NULL, 0 },
- { "list", kvm_cmd_list, NULL, 0 },
- { "version", kvm_cmd_version, NULL, 0 },
- { "--version", kvm_cmd_version, NULL, 0 },
- { "stop", kvm_cmd_stop, NULL, 0 },
- { "help", kvm_cmd_help, NULL, 0 },
- { "run", kvm_cmd_run, kvm_run_help, 0 },
- { NULL, NULL, NULL, 0 },
+ { "pause", kvm_cmd_pause, kvm_pause_help, 0 },
+ { "resume", kvm_cmd_resume, kvm_resume_help, 0 },
+ { "debug", kvm_cmd_debug, kvm_debug_help, 0 },
+ { "balloon", kvm_cmd_balloon, kvm_balloon_help, 0 },
+ { "list", kvm_cmd_list, kvm_list_help, 0 },
+ { "version", kvm_cmd_version, NULL, 0 },
+ { "--version", kvm_cmd_version, NULL, 0 },
+ { "stop", kvm_cmd_stop, kvm_stop_help, 0 },
+ { "help", kvm_cmd_help, NULL, 0 },
+ { "run", kvm_cmd_run, kvm_run_help, 0 },
+ { NULL, NULL, NULL, 0 },
};
/*
This patch connects usage helpers to 'kvm help' callbacks, allowing to see help about a command by doing 'kvm help [command]'. Signed-off-by: Sasha Levin <levinsasha928@gmail.com> --- tools/kvm/builtin-balloon.c | 7 ++++++- tools/kvm/builtin-debug.c | 7 ++++++- tools/kvm/builtin-list.c | 15 +++++++++++++++ tools/kvm/builtin-pause.c | 7 ++++++- tools/kvm/builtin-resume.c | 7 ++++++- tools/kvm/builtin-stop.c | 7 ++++++- tools/kvm/include/kvm/builtin-balloon.h | 1 + tools/kvm/include/kvm/builtin-debug.h | 1 + tools/kvm/include/kvm/builtin-list.h | 1 + tools/kvm/include/kvm/builtin-pause.h | 1 + tools/kvm/include/kvm/builtin-resume.h | 1 + tools/kvm/include/kvm/builtin-stop.h | 1 + tools/kvm/kvm-cmd.c | 22 +++++++++++----------- 13 files changed, 62 insertions(+), 16 deletions(-)