From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56989) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z4bR2-00035j-10 for qemu-devel@nongnu.org; Mon, 15 Jun 2015 16:56:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z4bQx-00087F-Ap for qemu-devel@nongnu.org; Mon, 15 Jun 2015 16:56:47 -0400 Received: from mx1.redhat.com ([209.132.183.28]:52071) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z4bQx-00087A-3Z for qemu-devel@nongnu.org; Mon, 15 Jun 2015 16:56:43 -0400 Message-ID: <557F3C04.4060508@redhat.com> Date: Mon, 15 Jun 2015 14:56:36 -0600 From: Eric Blake MIME-Version: 1.0 References: <1434205258-1932-1-git-send-email-armbru@redhat.com> <1434205258-1932-8-git-send-email-armbru@redhat.com> In-Reply-To: <1434205258-1932-8-git-send-email-armbru@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="bHDfin2SJAOloa9VQn87OMi8qpDCmitr5" Subject: Re: [Qemu-devel] [PATCH 07/11] qmp: Wean off qerror_report() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster , qemu-devel@nongnu.org Cc: kwolf@redhat.com, mdroth@linux.vnet.ibm.com, stefanha@redhat.com, lcapitulino@redhat.com This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --bHDfin2SJAOloa9VQn87OMi8qpDCmitr5 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 06/13/2015 08:20 AM, Markus Armbruster wrote: > The traditional QMP command handler interface >=20 > int qmp_FOO(Monitor *mon, const QDict *params, QObject **ret_data);= >=20 > doesn't provide for returning an Error object. Instead, the handler > is expected to stash it in the monitor with qerror_report(). >=20 > 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. >=20 > Middle mode has two effects: Are these effects documented anywhere, as in docs/qapi-code-gen.txt? Should they be, or are we better off trying to get rid of middle mode? >=20 > * Instead of the native input marshallers >=20 > static void qmp_marshal_input_FOO(QDict *, QObject **, Error **) >=20 > it generates input marshallers conforming to the traditional QMP > command handler interface. >=20 > * It suppresses generation of code to register them with > qmp_register_command() >=20 > This permits giving them internal linkage. >=20 > 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. Is there a qapi marking we can add for this effect, similar to 'gen':false? For that matter... >=20 > 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(). =2E..many of these are already using 'gen':false! >=20 > Switch middle mode to generate native input marshallers, and adapt the > stragglers. Simplifies both the monitor code and the stragglers. >=20 > 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. >=20 > Signed-off-by: Markus Armbruster > --- > 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(-) Relatively nice diffstat. Reviewed-by: Eric Blake --=20 Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org --bHDfin2SJAOloa9VQn87OMi8qpDCmitr5 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Public key at http://people.redhat.com/eblake/eblake.gpg Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBCAAGBQJVfzwEAAoJEKeha0olJ0NqmWYH/ivgoUW/6Jwz0aFctHsK90Wn EDHNTu/ttgOSA2pY3V815KmWh44Dt9bJ12jzHnn4QIWTJT0dsmrMR+qAXYkSHHUt 4eIRHDqCoiotlG/ah4RPr1iN62KSHLB9wNUPJ9Ss+kUj4kmfE1GHqQUEBXS8oGJ6 va/bACtPJxJ2FNxhTz9QVxNUmGYe+JMAfkqSFghntu0Cp4cD2ak1IFCUVt/jHVZi bgPVt7maVSYeJQNwZJkn2Pj0hVuNdvnxjn57FlKNeyiMLLDguOUlHPR5qSWwL/uB aHAHfrrl6dCSUc9+Xn5VHO5kyCi0SN+IWYSW4A/4ZgeFckAqAXlGYvolvJE7WCQ= =gNlQ -----END PGP SIGNATURE----- --bHDfin2SJAOloa9VQn87OMi8qpDCmitr5--