Way back in QEMU 4.0, the -audiodev command line option was introduced for configuring audio backends. This CLI option does not use QemuOpts so it is not visible for introspection in 'query-command-line-options', instead using the QAPI Audiodev type. Unfortunately there is also no QMP command that uses the Audiodev type, so it is not introspectable with 'query-qmp-schema' either.
This introduces a 'query-audiodev' command that simply reflects back the list of configured -audiodev command line options. This in turn makes Audiodev introspectable via 'query-qmp-schema'. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> --- audio/audio.c | 19 +++++++++++++++++++ qapi/audio.json | 13 +++++++++++++ 2 files changed, 32 insertions(+) diff --git a/audio/audio.c b/audio/audio.c index 6734c8af70..40a4bbd7ce 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -28,8 +28,10 @@ #include "monitor/monitor.h" #include "qemu/timer.h" #include "qapi/error.h" +#include "qapi/clone-visitor.h" #include "qapi/qobject-input-visitor.h" #include "qapi/qapi-visit-audio.h" +#include "qapi/qapi-commands-audio.h" #include "qemu/cutils.h" #include "qemu/module.h" #include "sysemu/replay.h" @@ -2201,3 +2203,20 @@ size_t audio_rate_get_bytes(struct audio_pcm_info *info, RateCtl *rate, rate->bytes_sent += ret; return ret; } + +AudiodevList *qmp_query_audiodevs(Error **errp) +{ + AudiodevList *ret = NULL, *prev = NULL, *curr; + AudiodevListEntry *e; + QSIMPLEQ_FOREACH(e, &audiodevs, next) { + curr = g_new0(AudiodevList, 1); + curr->value = QAPI_CLONE(Audiodev, e->dev); + if (prev) { + prev->next = curr; + prev = curr; + } else { + ret = prev = curr; + } + } + return ret; +} diff --git a/qapi/audio.json b/qapi/audio.json index 9cba0df8a4..d7b91230d7 100644 --- a/qapi/audio.json +++ b/qapi/audio.json @@ -419,3 +419,16 @@ 'sdl': 'AudiodevSdlOptions', 'spice': 'AudiodevGenericOptions', 'wav': 'AudiodevWavOptions' } } + +## +# @query-audiodevs: +# +# Returns information about audiodev configuration +# +# Returns: array of @Audiodev +# +# Since: 6.0 +# +## +{ 'command': 'query-audiodevs', + 'returns': ['Audiodev'] } -- 2.29.2