Make parts of the qapi schema conditional based on host and target config. Remove the no longer needed fallback commands implementations.
Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> --- hmp.c | 2 ++ monitor.c | 22 ---------------------- qmp.c | 32 -------------------------------- hmp-commands-info.hx | 2 ++ qapi-schema.json | 30 ++++++++++++++++++++++++++++++ qapi/event.json | 8 ++++++++ qmp-commands.hx | 7 ++++--- 7 files changed, 46 insertions(+), 57 deletions(-) diff --git a/hmp.c b/hmp.c index cc2056e..339f5c6 100644 --- a/hmp.c +++ b/hmp.c @@ -570,6 +570,7 @@ void hmp_info_blockstats(Monitor *mon, const QDict *qdict) qapi_free_BlockStatsList(stats_list); } +#ifdef CONFIG_VNC void hmp_info_vnc(Monitor *mon, const QDict *qdict) { VncInfo *info; @@ -615,6 +616,7 @@ void hmp_info_vnc(Monitor *mon, const QDict *qdict) out: qapi_free_VncInfo(info); } +#endif #ifdef CONFIG_SPICE void hmp_info_spice(Monitor *mon, const QDict *qdict) diff --git a/monitor.c b/monitor.c index 5c00373..289fa5e 100644 --- a/monitor.c +++ b/monitor.c @@ -4306,28 +4306,6 @@ QemuOptsList qemu_mon_opts = { }, }; -#ifndef TARGET_I386 -void qmp_rtc_reset_reinjection(Error **errp) -{ - error_setg(errp, QERR_FEATURE_DISABLED, "rtc-reset-reinjection"); -} -#endif - -#ifndef TARGET_S390X -void qmp_dump_skeys(const char *filename, Error **errp) -{ - error_setg(errp, QERR_FEATURE_DISABLED, "dump-skeys"); -} -#endif - -#ifndef TARGET_ARM -GICCapabilityList *qmp_query_gic_capabilities(Error **errp) -{ - error_setg(errp, QERR_FEATURE_DISABLED, "query-gic-capabilities"); - return NULL; -} -#endif - HotpluggableCPUList *qmp_query_hotpluggable_cpus(Error **errp) { MachineState *ms = MACHINE(qdev_get_machine()); diff --git a/qmp.c b/qmp.c index b6d531e..01671ad 100644 --- a/qmp.c +++ b/qmp.c @@ -145,38 +145,6 @@ void qmp_cpu_add(int64_t id, Error **errp) } } -#ifndef CONFIG_VNC -/* If VNC support is enabled, the "true" query-vnc command is - defined in the VNC subsystem */ -VncInfo *qmp_query_vnc(Error **errp) -{ - error_setg(errp, QERR_FEATURE_DISABLED, "vnc"); - return NULL; -}; - -VncInfo2List *qmp_query_vnc_servers(Error **errp) -{ - error_setg(errp, QERR_FEATURE_DISABLED, "vnc"); - return NULL; -}; -#endif - -#ifndef CONFIG_SPICE -/* - * qmp-commands.hx ensures that QMP command query-spice exists only - * #ifdef CONFIG_SPICE. Necessary for an accurate query-commands - * result. However, the QAPI schema is blissfully unaware of that, - * and the QAPI code generator happily generates a dead - * qmp_marshal_query_spice() that calls qmp_query_spice(). Provide it - * one, or else linking fails. FIXME Educate the QAPI schema on - * CONFIG_SPICE. - */ -SpiceInfo *qmp_query_spice(Error **errp) -{ - abort(); -}; -#endif - void qmp_cont(Error **errp) { Error *local_err = NULL; diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx index 74446c6..be6e13a 100644 --- a/hmp-commands-info.hx +++ b/hmp-commands-info.hx @@ -430,6 +430,7 @@ STEXI Show which guest mouse is receiving events. ETEXI +#if defined(CONFIG_VNC) { .name = "vnc", .args_type = "", @@ -437,6 +438,7 @@ ETEXI .help = "show the vnc server status", .mhandler.cmd = hmp_info_vnc, }, +#endif STEXI @item info vnc diff --git a/qapi-schema.json b/qapi-schema.json index 5658723..caad127 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -973,6 +973,8 @@ { 'enum': 'NetworkAddressFamily', 'data': [ 'ipv4', 'ipv6', 'unix', 'unknown' ] } +#ifdef CONFIG_VNC + ## # @VncBasicInfo # @@ -1146,6 +1148,10 @@ ## { 'command': 'query-vnc-servers', 'returns': ['VncInfo2'] } +#endif CONFIG_VNC + +#ifdef CONFIG_SPICE + ## # @SpiceBasicInfo # @@ -1271,6 +1277,8 @@ ## { 'command': 'query-spice', 'returns': 'SpiceInfo' } +#endif CONFIG_SPICE + ## # @BalloonInfo: # @@ -2000,6 +2008,8 @@ ## { 'command': 'expire_password', 'data': {'protocol': 'str', 'time': 'str'} } +#ifdef CONFIG_VNC + ## # @change-vnc-password: # @@ -2014,6 +2024,8 @@ ## { 'command': 'change-vnc-password', 'data': {'password': 'str'} } +#endif + ## # @change: # @@ -2343,6 +2355,8 @@ { 'command': 'query-dump-guest-memory-capability', 'returns': 'DumpGuestMemoryCapability' } +#ifdef TARGET_S390X + ## # @dump-skeys # @@ -2357,6 +2371,8 @@ { 'command': 'dump-skeys', 'data': { 'filename': 'str' } } +#endif TARGET_S390X + ## # @netdev_add: # @@ -3371,6 +3387,8 @@ 'base': 'ChardevCommon' } +#ifdef CONFIG_SPICE + ## # @ChardevSpiceChannel: # @@ -3395,6 +3413,8 @@ { 'struct': 'ChardevSpicePort', 'data': { 'fqdn' : 'str' }, 'base': 'ChardevCommon' } +#endif CONFIG_SPICE + ## # @ChardevVC: # @@ -3446,8 +3466,10 @@ 'testdev': 'ChardevCommon', 'stdio' : 'ChardevStdio', 'console': 'ChardevCommon', +#ifdef CONFIG_SPICE 'spicevmc' : 'ChardevSpiceChannel', 'spiceport' : 'ChardevSpicePort', +#endif 'vc' : 'ChardevVC', 'ringbuf': 'ChardevRingbuf', # next one is just for compatibility @@ -4200,6 +4222,8 @@ { 'enum': 'GuestPanicAction', 'data': [ 'pause' ] } +#ifdef TARGET_I386 + ## # @rtc-reset-reinjection # @@ -4212,6 +4236,8 @@ ## { 'command': 'rtc-reset-reinjection' } +#endif TARGET_I386 + # Rocker ethernet network switch { 'include': 'qapi/rocker.json' } @@ -4271,6 +4297,8 @@ 'emulated': 'bool', 'kernel': 'bool' } } +#ifdef TARGET_ARM + ## # @query-gic-capabilities: # @@ -4283,6 +4311,8 @@ ## { 'command': 'query-gic-capabilities', 'returns': ['GICCapability'] } +#endif TARGET_ARM + ## # CpuInstanceProperties # diff --git a/qapi/event.json b/qapi/event.json index 8642052..712045f 100644 --- a/qapi/event.json +++ b/qapi/event.json @@ -138,6 +138,8 @@ { 'event': 'NIC_RX_FILTER_CHANGED', 'data': { '*name': 'str', 'path': 'str' } } +#ifdef CONFIG_VNC + ## # @VNC_CONNECTED # @@ -187,6 +189,10 @@ 'data': { 'server': 'VncServerInfo', 'client': 'VncClientInfo' } } +#endif CONFIG_VNC + +#ifdef CONFIG_SPICE + ## # @SPICE_CONNECTED # @@ -242,6 +248,8 @@ ## { 'event': 'SPICE_MIGRATE_COMPLETED' } +#endif + ## # @MIGRATION # diff --git a/qmp-commands.hx b/qmp-commands.hx index 6866264..0eb0d9c 100644 --- a/qmp-commands.hx +++ b/qmp-commands.hx @@ -3347,7 +3347,7 @@ Example: } EQMP - +#if defined(CONFIG_VNC) { .name = "query-vnc", .args_type = "", @@ -3358,7 +3358,7 @@ EQMP .args_type = "", .mhandler.cmd_new = qmp_marshal_query_vnc_servers, }, - +#endif SQMP query-spice ----------- @@ -3911,12 +3911,13 @@ EQMP .args_type = "", .mhandler.cmd_new = qmp_marshal_nbd_server_stop, }, - +#if defined(CONFIG_VNC) { .name = "change-vnc-password", .args_type = "password:s", .mhandler.cmd_new = qmp_marshal_change_vnc_password, }, +#endif { .name = "qom-list-types", .args_type = "implements:s?,abstract:b?", -- 2.9.0