chardev: Add 'help' option to print all available chardev backend types

Signed-off-by: Lin Ma <lma@suse.com>
Message-Id: <20160816171352.17021-1-lma@suse.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Lin Ma 2016-08-17 01:13:52 +08:00 committed by Paolo Bonzini
parent 173134467a
commit 517b3d4016
2 changed files with 19 additions and 5 deletions

View File

@ -39,6 +39,7 @@
#include "io/channel-file.h" #include "io/channel-file.h"
#include "io/channel-tls.h" #include "io/channel-tls.h"
#include "sysemu/replay.h" #include "sysemu/replay.h"
#include "qemu/help_option.h"
#include <zlib.h> #include <zlib.h>
@ -3879,16 +3880,26 @@ CharDriverState *qemu_chr_new_from_opts(QemuOpts *opts,
const char *id = qemu_opts_id(opts); const char *id = qemu_opts_id(opts);
char *bid = NULL; char *bid = NULL;
if (id == NULL) {
error_setg(errp, "chardev: no id specified");
goto err;
}
if (qemu_opt_get(opts, "backend") == NULL) { if (qemu_opt_get(opts, "backend") == NULL) {
error_setg(errp, "chardev: \"%s\" missing backend", error_setg(errp, "chardev: \"%s\" missing backend",
qemu_opts_id(opts)); qemu_opts_id(opts));
goto err; goto err;
} }
if (is_help_option(qemu_opt_get(opts, "backend"))) {
fprintf(stderr, "Available chardev backend types:\n");
for (i = backends; i; i = i->next) {
cd = i->data;
fprintf(stderr, "%s\n", cd->name);
}
exit(!is_help_option(qemu_opt_get(opts, "backend")));
}
if (id == NULL) {
error_setg(errp, "chardev: no id specified");
goto err;
}
for (i = backends; i; i = i->next) { for (i = backends; i; i = i->next) {
cd = i->data; cd = i->data;

View File

@ -2152,6 +2152,7 @@ The general form of a character device option is:
ETEXI ETEXI
DEF("chardev", HAS_ARG, QEMU_OPTION_chardev, DEF("chardev", HAS_ARG, QEMU_OPTION_chardev,
"-chardev help\n"
"-chardev null,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n" "-chardev null,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
"-chardev socket,id=id[,host=host],port=port[,to=to][,ipv4][,ipv6][,nodelay][,reconnect=seconds]\n" "-chardev socket,id=id[,host=host],port=port[,to=to][,ipv4][,ipv6][,nodelay][,reconnect=seconds]\n"
" [,server][,nowait][,telnet][,reconnect=seconds][,mux=on|off]\n" " [,server][,nowait][,telnet][,reconnect=seconds][,mux=on|off]\n"
@ -2217,6 +2218,8 @@ Backend is one of:
@option{spiceport}. @option{spiceport}.
The specific backend will determine the applicable options. The specific backend will determine the applicable options.
Use "-chardev help" to print all available chardev backend types.
All devices must have an id, which can be any string up to 127 characters long. All devices must have an id, which can be any string up to 127 characters long.
It is used to uniquely identify this device in other command line directives. It is used to uniquely identify this device in other command line directives.