From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: Laurent Vivier <lvivier@redhat.com>,
Thomas Huth <thuth@redhat.com>,
Eduardo Habkost <ehabkost@redhat.com>,
David Hildenbrand <david@redhat.com>,
Michael Roth <michael.roth@amd.com>,
Cornelia Huck <cohuck@redhat.com>,
Yuval Shaia <yuval.shaia.ml@gmail.com>,
qemu-devel@nongnu.org, Peter Xu <peterx@redhat.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
Halil Pasic <pasic@linux.ibm.com>,
Christian Borntraeger <borntraeger@de.ibm.com>,
qemu-s390x@nongnu.org, Gerd Hoffmann <kraxel@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <richard.henderson@linaro.org>,
Eric Blake <eblake@redhat.com>
Subject: Re: [PATCH v3 04/19] docs/devel: add example of command returning unstructured text
Date: Thu, 28 Oct 2021 16:31:56 +0100 [thread overview]
Message-ID: <YXrCbIP2d19ofgL0@redhat.com> (raw)
In-Reply-To: <87r1c5nr4d.fsf@dusky.pond.sub.org>
On Thu, Oct 28, 2021 at 04:47:14PM +0200, Markus Armbruster wrote:
> Daniel P. Berrangé <berrange@redhat.com> writes:
>
> > This illustrates how to add a QMP command returning unstructured text,
> > following the guidelines added in the previous patch. The example uses
> > a simplified version of 'info roms'.
> >
> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> > ---
> > docs/devel/writing-monitor-commands.rst | 87 ++++++++++++++++++++++++-
> > 1 file changed, 86 insertions(+), 1 deletion(-)
> > +Implementing the HMP command
> > +~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > +
> > +Now that the QMP command is in place, we can also make it available in
> > +the human monitor (HMP) as shown in previous examples. The HMP
> > +implementations will all look fairly similar, as all they need do is
> > +invoke the QMP command and then print the resulting text or error
> > +message. Here's the implementation of the "info roms" HMP command::
> > +
> > + void hmp_info_roms(Monitor *mon, const QDict *qdict)
> > + {
> > + Error err = NULL;
> > + g_autoptr(HumanReadableText) info = qmp_x_query_roms(&err);
> > +
> > + if (err) {
> > + error_report_err(err);
> > + return;
> > + }
>
> There's hmp_handle_error().
>
> If it returned whether there's an error, we could write
>
> if (hmp_handle_error(err)) {
> return;
> }
I'll add a return value to hmp_handle_error and update existing
callers where appropriate
>
> Of course, qmp_x_query_roms() can't fail, so we could just as well do
>
> g_autoptr(HumanReadableText) info = qmp_x_query_roms(&error_abort);
>
> Okay as long as we show how to report errors in HMP commands
> *somewhere*, but the use of &error_abort needs explaining. Not sure
> that's an improvement here.
For the sake of illustration I think I'll stick with hmp_handle_error
and not &error_abort. In fact following Dave's feedback, I've added
a helper to provide the HMP implementation with no code required in
the no-arg case.
> Aside: the existing examples show questionable error handling. The
> first one uses error_get_pretty() instead of hmp_handle_error(). The
> other two throw away the error they get from the QMP command, and report
> "Could not query ..." instead, which is a bit of an anti-pattern.
I'll fix those examples
>
> > + monitor_printf(mon, "%s\n", info->human_readable_text);
>
> Sure you want to print an extra newline?
Opps, mistake.
> If not, then consider
>
> monitor_puts(mon, info->human_readable_text);
I'd prefer "%s", since it avoids danger of the human readable
text possibly containing a '%' sign that trips up printf.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2021-10-28 15:33 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-30 13:23 [PATCH v3 00/19] monitor: explicitly permit QMP commands to be added for all use cases Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 01/19] docs/devel: rename file for writing monitor commands Daniel P. Berrangé
2021-10-04 15:50 ` Eric Blake
2021-09-30 13:23 ` [PATCH v3 02/19] docs/devel: tweak headings in monitor command docs Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 03/19] docs/devel: document expectations for QAPI data modelling for QMP Daniel P. Berrangé
2021-10-04 12:13 ` Dr. David Alan Gilbert
2021-10-04 12:23 ` Daniel P. Berrangé
2021-10-28 14:31 ` Markus Armbruster
2021-10-28 15:24 ` Daniel P. Berrangé
2021-11-03 13:52 ` Daniel P. Berrangé
2021-11-04 5:43 ` Markus Armbruster
2021-11-04 8:54 ` Daniel P. Berrangé
2021-11-09 6:39 ` Markus Armbruster
2021-11-09 9:47 ` Daniel P. Berrangé
2021-11-09 14:58 ` Markus Armbruster
2021-09-30 13:23 ` [PATCH v3 04/19] docs/devel: add example of command returning unstructured text Daniel P. Berrangé
2021-10-04 18:25 ` Eric Blake
2021-10-28 14:47 ` Markus Armbruster
2021-10-28 15:31 ` Daniel P. Berrangé [this message]
2021-10-28 17:13 ` Markus Armbruster
2021-09-30 13:23 ` [PATCH v3 05/19] docs/devel: document expectations for HMP commands in the future Daniel P. Berrangé
2021-10-04 18:33 ` Eric Blake
2021-10-28 14:47 ` Markus Armbruster
2021-09-30 13:23 ` [PATCH v3 06/19] monitor: remove 'info ioapic' HMP command Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 07/19] qapi: introduce x-query-roms QMP command Daniel P. Berrangé
2021-10-04 12:32 ` Dr. David Alan Gilbert
2021-10-04 15:57 ` Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 08/19] qapi: introduce x-query-profile " Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 09/19] qapi: introduce x-query-numa " Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 10/19] qapi: introduce x-query-usb " Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 11/19] qapi: introduce x-query-rdma " Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 12/19] qapi: introduce x-query-ramblock " Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 13/19] qapi: introduce x-query-skeys " Daniel P. Berrangé
2021-10-12 7:12 ` Thomas Huth
2021-10-18 9:50 ` Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 14/19] qapi: introduce x-query-cmma " Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 15/19] hmp: synchronize cpu state for lapic info Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 16/19] qapi: introduce x-query-lapic QMP command Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 17/19] qapi: introduce x-query-irq " Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 18/19] qapi: introduce x-query-jit " Daniel P. Berrangé
2021-09-30 13:23 ` [PATCH v3 19/19] qapi: introduce x-query-opcount " Daniel P. Berrangé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YXrCbIP2d19ofgL0@redhat.com \
--to=berrange@redhat.com \
--cc=armbru@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=ehabkost@redhat.com \
--cc=kraxel@redhat.com \
--cc=lvivier@redhat.com \
--cc=michael.roth@amd.com \
--cc=pasic@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
--cc=yuval.shaia.ml@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).