aboutsummaryrefslogtreecommitdiff
path: root/qapi
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2024-02-03 09:02:27 +0100
committerMarkus Armbruster <armbru@redhat.com>2024-02-14 07:45:08 +0100
commit563799f6c08ac17607348bc82fade15c0d13b7e4 (patch)
tree7f5035c1797cffaca2073233c627502d3668adb3 /qapi
parentf396da77ca59cc67fedb54fe4ea22fbb961270d3 (diff)
downloadqemu-563799f6c08ac17607348bc82fade15c0d13b7e4.zip
qemu-563799f6c08ac17607348bc82fade15c0d13b7e4.tar.gz
qemu-563799f6c08ac17607348bc82fade15c0d13b7e4.tar.bz2
qapi/char: Make backend types properly conditional
Character backends are actually QOM types. When a backend's compile-time conditional QOM type is not compiled in, creation fails with "'FOO' is not a valid char driver name". Okay, except introspecting chardev-add with query-qmp-schema doesn't work then: the backend type is there even though the QOM type isn't. A management application can work around this issue by using qom-list-types instead. Fix the issue anyway: add the conditionals to the QAPI schema. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-ID: <20240203080228.2766159-4-armbru@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
Diffstat (limited to 'qapi')
-rw-r--r--qapi/char.json20
1 files changed, 12 insertions, 8 deletions
diff --git a/qapi/char.json b/qapi/char.json
index 6c6ad3b..2d74e66 100644
--- a/qapi/char.json
+++ b/qapi/char.json
@@ -472,8 +472,8 @@
##
{ 'enum': 'ChardevBackendKind',
'data': [ 'file',
- 'serial',
- 'parallel',
+ { 'name': 'serial', 'if': 'HAVE_CHARDEV_SERIAL' },
+ { 'name': 'parallel', 'if': 'HAVE_CHARDEV_PARALLEL' },
'pipe',
'socket',
'udp',
@@ -482,10 +482,10 @@
'mux',
'msmouse',
'wctablet',
- 'braille',
+ { 'name': 'braille', 'if': 'CONFIG_BRLAPI' },
'testdev',
'stdio',
- 'console',
+ { 'name': 'console', 'if': 'CONFIG_WIN32' },
{ 'name': 'spicevmc', 'if': 'CONFIG_SPICE' },
{ 'name': 'spiceport', 'if': 'CONFIG_SPICE' },
{ 'name': 'qemu-vdagent', 'if': 'CONFIG_SPICE_PROTOCOL' },
@@ -614,8 +614,10 @@
'base': { 'type': 'ChardevBackendKind' },
'discriminator': 'type',
'data': { 'file': 'ChardevFileWrapper',
- 'serial': 'ChardevHostdevWrapper',
- 'parallel': 'ChardevHostdevWrapper',
+ 'serial': { 'type': 'ChardevHostdevWrapper',
+ 'if': 'HAVE_CHARDEV_SERIAL' },
+ 'parallel': { 'type': 'ChardevHostdevWrapper',
+ 'if': 'HAVE_CHARDEV_PARALLEL' },
'pipe': 'ChardevHostdevWrapper',
'socket': 'ChardevSocketWrapper',
'udp': 'ChardevUdpWrapper',
@@ -624,10 +626,12 @@
'mux': 'ChardevMuxWrapper',
'msmouse': 'ChardevCommonWrapper',
'wctablet': 'ChardevCommonWrapper',
- 'braille': 'ChardevCommonWrapper',
+ 'braille': { 'type': 'ChardevCommonWrapper',
+ 'if': 'CONFIG_BRLAPI' },
'testdev': 'ChardevCommonWrapper',
'stdio': 'ChardevStdioWrapper',
- 'console': 'ChardevCommonWrapper',
+ 'console': { 'type': 'ChardevCommonWrapper',
+ 'if': 'CONFIG_WIN32' },
'spicevmc': { 'type': 'ChardevSpiceChannelWrapper',
'if': 'CONFIG_SPICE' },
'spiceport': { 'type': 'ChardevSpicePortWrapper',