[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 07/11] qmp: Wean off qerror_report()
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH 07/11] qmp: Wean off qerror_report() |
Date: |
Mon, 15 Jun 2015 16:08:07 +0100 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Sat, Jun 13, 2015 at 04:20:54PM +0200, Markus Armbruster wrote:
> The traditional QMP command handler interface
>
> int qmp_FOO(Monitor *mon, const QDict *params, QObject **ret_data);
>
> doesn't provide for returning an Error object. Instead, the handler
> is expected to stash it in the monitor with qerror_report().
>
> When we rebased QMP on top of QAPI, we didn't change this interface.
> Instead, commit 776574d introduced "middle mode" as a temporary aid
> for converting existing QMP commands to QAPI one by one. More than
> three years later, we're still using it.
>
> Middle mode has two effects:
>
> * Instead of the native input marshallers
>
> static void qmp_marshal_input_FOO(QDict *, QObject **, Error **)
>
> it generates input marshallers conforming to the traditional QMP
> command handler interface.
>
> * It suppresses generation of code to register them with
> qmp_register_command()
>
> This permits giving them internal linkage.
>
> As long as we need qmp-commands.hx, we can't use the registry behind
> qmp_register_command(), so the latter has to stay for now.
>
> The former has to go to get rid of qerror_report(). Changing all QMP
> commands to fit the QAPI mold in one go was impractical back when we
> started, but by now there are just a few stragglers left:
> do_qmp_capabilities(), qmp_qom_set(), qmp_qom_get(), qmp_object_add(),
> qmp_netdev_add(), do_device_add().
>
> Switch middle mode to generate native input marshallers, and adapt the
> stragglers. Simplifies both the monitor code and the stragglers.
>
> Rename do_qmp_capabilities() to qmp_capabilities(), and
> do_device_add() to qmp_device_add, because that's how QMP command
> handlers are named today.
>
> Signed-off-by: Markus Armbruster <address@hidden>
> ---
> hmp.c | 5 ++++-
> include/monitor/monitor.h | 7 +++---
> include/monitor/qdev.h | 3 ++-
> include/net/net.h | 2 +-
> monitor.c | 24 ++++++---------------
> net/net.c | 16 ++++++--------
> qdev-monitor.c | 15 ++++++-------
> qmp-commands.hx | 4 ++--
> qmp.c | 55
> +++++++++++------------------------------------
> scripts/qapi-commands.py | 41 ++++++-----------------------------
> util/qemu-error.c | 4 ++--
> 11 files changed, 50 insertions(+), 126 deletions(-)
Net portions look good.
Reviewed-by: Stefan Hajnoczi <address@hidden>
pgpgIQj8kupbC.pgp
Description: PGP signature
[Qemu-devel] [PATCH 08/11] qerror: Finally unused, clean up, Markus Armbruster, 2015/06/13
[Qemu-devel] [PATCH 11/11] Include monitor/monitor.h exactly where needed, Markus Armbruster, 2015/06/13
[Qemu-devel] [PATCH 07/11] qmp: Wean off qerror_report(), Markus Armbruster, 2015/06/13
[Qemu-devel] [PATCH 01/11] QemuOpts: Wean off qerror_report_err(), Markus Armbruster, 2015/06/13
[Qemu-devel] [PATCH 10/11] Include qapi/qmp/qerror.h exactly where needed, Markus Armbruster, 2015/06/13