Message ID | 67b869e0b5b500dc4fb8678341ce355a24cc74e7.1391164459.git.mkletzan@redhat.com |
---|---|
State | New |
Headers | show |
On 01/31/2014 03:35 AM, Martin Kletzander wrote: > Introduce 'query-chardev-backends' QMP command which lists all > supported character device backends. > > Signed-off-by: Martin Kletzander <mkletzan@redhat.com> > --- > qapi-schema.json | 22 ++++++++++++++++++++++ > qemu-char.c | 19 +++++++++++++++++++ > qmp-commands.hx | 41 +++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 82 insertions(+) > > diff --git a/qapi-schema.json b/qapi-schema.json > index 05ced9d..ac1061f 100644 > --- a/qapi-schema.json > +++ b/qapi-schema.json > @@ -437,6 +437,28 @@ > { 'command': 'query-chardev', 'returns': ['ChardevInfo'] } > > ## > +# @ChardevBackendInfo: > +# > +# Information about a character device backend > +# > +# @name: The backend name > +# > +# Since: 1.8.0 2.0 will be the next release. > +## > +{ 'type': 'ChardevBackendInfo', 'data': {'name': 'str'} } > + > +## > +# @query-chardev-backends: > +# > +# Returns information about character device backends. > +# > +# Returns: a list of @ChardevBackendInfo > +# > +# Since: 1.8.0 Again, 2.0. > + > +-> { "execute": "query-chardev-backends" } > +<- { > + "return":[ > + { > + "name":"udp", > + }, This is somewhat complex, but allows us the option of future addition of other items to return in addition to the name, if it proves useful (returning a straight array of strings instead of an array of structs prevents such future expansion). So I think you made the right choice. With the fixes to the version number: Reviewed-by: Eric Blake <eblake@redhat.com>
diff --git a/qapi-schema.json b/qapi-schema.json index 05ced9d..ac1061f 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -437,6 +437,28 @@ { 'command': 'query-chardev', 'returns': ['ChardevInfo'] } ## +# @ChardevBackendInfo: +# +# Information about a character device backend +# +# @name: The backend name +# +# Since: 1.8.0 +## +{ 'type': 'ChardevBackendInfo', 'data': {'name': 'str'} } + +## +# @query-chardev-backends: +# +# Returns information about character device backends. +# +# Returns: a list of @ChardevBackendInfo +# +# Since: 1.8.0 +## +{ 'command': 'query-chardev-backends', 'returns': ['ChardevBackendInfo'] } + +## # @DataFormat: # # An enumeration of data format. diff --git a/qemu-char.c b/qemu-char.c index 30c5a6a..c88f1c4 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -3432,6 +3432,25 @@ ChardevInfoList *qmp_query_chardev(Error **errp) return chr_list; } +ChardevBackendInfoList *qmp_query_chardev_backends(Error **errp) +{ + ChardevBackendInfoList *backend_list = NULL; + CharDriver *c = NULL; + GSList *i = NULL; + + for (i = backends; i; i = i->next) { + ChardevBackendInfoList *info = g_malloc0(sizeof(*info)); + c = i->data; + info->value = g_malloc0(sizeof(*info->value)); + info->value->name = g_strdup(c->name); + + info->next = backend_list; + backend_list = info; + } + + return backend_list; +} + CharDriverState *qemu_chr_find(const char *name) { CharDriverState *chr; diff --git a/qmp-commands.hx b/qmp-commands.hx index cce6b81..c38964d 100644 --- a/qmp-commands.hx +++ b/qmp-commands.hx @@ -1924,6 +1924,47 @@ EQMP }, SQMP +query-chardev-backends +------------- + +List available character device backends. + +Each backend is represented by a json-object, the returned value is a json-array +of all backends. + +Each json-object contains: + +- "name": backend name (json-string) + +Example: + +-> { "execute": "query-chardev-backends" } +<- { + "return":[ + { + "name":"udp", + }, + { + "name":"tcp", + }, + { + "name":"unix", + }, + { + "name":"spiceport", + } + ] + } + +EQMP + + { + .name = "query-chardev-backends", + .args_type = "", + .mhandler.cmd_new = qmp_marshal_input_query_chardev_backends, + }, + +SQMP query-block -----------
Introduce 'query-chardev-backends' QMP command which lists all supported character device backends. Signed-off-by: Martin Kletzander <mkletzan@redhat.com> --- qapi-schema.json | 22 ++++++++++++++++++++++ qemu-char.c | 19 +++++++++++++++++++ qmp-commands.hx | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+)