All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: qemu-devel@nongnu.org, armbru@redhat.com, pbonzini@redhat.com,
	Marcel Apfelbaum <marcel@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 01/36] pci: Use struct instead of QDict to pass back parameters
Date: Wed, 30 Nov 2016 23:15:16 +0200	[thread overview]
Message-ID: <20161130231224-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <1480535094-23831-2-git-send-email-eblake@redhat.com>

On Wed, Nov 30, 2016 at 01:44:19PM -0600, Eric Blake wrote:
> It's simpler to just use a C struct than it is to bundle things
> into a QDict in one function just to pull them back out in the
> caller.  Plus, doing this gets rid of one more user of dynamic
> JSON through qobject_from_jsonf().
> 
> Signed-off-by: Eric Blake <eblake@redhat.com>

Acked-by: Michael S. Tsirkin <mst@redhat.com>

> ---
>  hw/pci/pcie_aer.c | 36 +++++++++++++++++-------------------
>  1 file changed, 17 insertions(+), 19 deletions(-)
> 
> diff --git a/hw/pci/pcie_aer.c b/hw/pci/pcie_aer.c
> index 048ce6a..0735796 100644
> --- a/hw/pci/pcie_aer.c
> +++ b/hw/pci/pcie_aer.c
> @@ -43,6 +43,13 @@
>  #define PCI_ERR_SRC_COR_OFFS    0
>  #define PCI_ERR_SRC_UNCOR_OFFS  2
> 
> +typedef struct PCIEErrorInject {
> +    const char *id;
> +    const char *root_bus;
> +    int bus;
> +    int devfn;
> +} PCIEErrorInject;
> +
>  /* From 6.2.7 Error Listing and Rules. Table 6-2, 6-3 and 6-4 */
>  static uint32_t pcie_aer_uncor_default_severity(uint32_t status)
>  {
> @@ -946,7 +953,8 @@ static int pcie_aer_parse_error_string(const char *error_name,
>  }
> 
>  static int do_pcie_aer_inject_error(Monitor *mon,
> -                                    const QDict *qdict, QObject **ret_data)
> +                                    const QDict *qdict,
> +                                    PCIEErrorInject *ret_data)
>  {
>      const char *id = qdict_get_str(qdict, "id");
>      const char *error_name;
> @@ -1007,34 +1015,24 @@ static int do_pcie_aer_inject_error(Monitor *mon,
>      err.prefix[2] = qdict_get_try_int(qdict, "prefix2", 0);
>      err.prefix[3] = qdict_get_try_int(qdict, "prefix3", 0);
> 
> -    ret = pcie_aer_inject_error(dev, &err);
> -    *ret_data = qobject_from_jsonf("{'id': %s, "
> -                                   "'root_bus': %s, 'bus': %d, 'devfn': %d, "
> -                                   "'ret': %d}",
> -                                   id, pci_root_bus_path(dev),
> -                                   pci_bus_num(dev->bus), dev->devfn,
> -                                   ret);
> -    assert(*ret_data);
> +    pcie_aer_inject_error(dev, &err);
> +    ret_data->id = id;
> +    ret_data->root_bus = pci_root_bus_path(dev);
> +    ret_data->bus = pci_bus_num(dev->bus);
> +    ret_data->devfn = dev->devfn;
> 
>      return 0;
>  }
> 
>  void hmp_pcie_aer_inject_error(Monitor *mon, const QDict *qdict)
>  {
> -    QObject *data;
> -    int devfn;
> +    PCIEErrorInject data;
> 
>      if (do_pcie_aer_inject_error(mon, qdict, &data) < 0) {
>          return;
>      }
> 
> -    assert(qobject_type(data) == QTYPE_QDICT);
> -    qdict = qobject_to_qdict(data);
> -
> -    devfn = (int)qdict_get_int(qdict, "devfn");
>      monitor_printf(mon, "OK id: %s root bus: %s, bus: %x devfn: %x.%x\n",
> -                   qdict_get_str(qdict, "id"),
> -                   qdict_get_str(qdict, "root_bus"),
> -                   (int) qdict_get_int(qdict, "bus"),
> -                   PCI_SLOT(devfn), PCI_FUNC(devfn));
> +                   data.id, data.root_bus, data.bus,
> +                   PCI_SLOT(data.devfn), PCI_FUNC(data.devfn));
>  }
> -- 
> 2.7.4

  reply	other threads:[~2016-11-30 21:15 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-30 19:44 [Qemu-devel] [PATCH 00/36] Rip out dynamic JSON parsing Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 01/36] pci: Use struct instead of QDict to pass back parameters Eric Blake
2016-11-30 21:15   ` Michael S. Tsirkin [this message]
2016-11-30 19:44 ` [Qemu-devel] [PATCH 02/36] qdict: Add convenience helpers for wrapped puts Eric Blake
2016-11-30 19:44   ` Eric Blake
2016-12-09 14:06   ` [Qemu-devel] " Alberto Garcia
2016-12-09 14:06     ` Alberto Garcia
2016-11-30 19:44 ` [Qemu-devel] [PATCH 03/36] qlist: Add convenience helpers for wrapped appends Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 04/36] qmp-event: Avoid dynamic JSON Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 05/36] qmp-dispatch: " Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 06/36] qobject-input-visitor: Avoid dynamic JSON in tests Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 07/36] fdc-test: Avoid deprecated 'change' command Eric Blake
2016-11-30 20:58   ` John Snow
2016-11-30 19:44 ` [Qemu-devel] [PATCH 08/36] test-qga: Actually test 0xff sync bytes Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 09/36] qtest: Add a new helper qmp_cmd() and friends Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 10/36] qtest: Avoid dynamic JSON in libqtest Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 11/36] qapi: Add QAPI_TO_QOBJECT() convenience macro Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 12/36] nbd: Use simpler QAPI_TO_QOBJECT() Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 13/36] nfs: " Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 14/36] qapi: " Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 15/36] blockdev: " Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 16/36] qapi: Promote blockdev-change-medium arguments to QAPI type Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 17/36] qtest: Avoid dynamic JSON in ahci-test Eric Blake
2016-11-30 21:02   ` John Snow
2016-11-30 21:19     ` Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 18/36] qtest: Avoid dynamic JSON in fdc-test Eric Blake
2016-11-30 21:14   ` John Snow
2016-11-30 19:44 ` [Qemu-devel] [PATCH 19/36] qtest: Change qmp_discard_response() to drop varargs Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 20/36] qtest: Avoid dynamic JSON in device-introspect-test Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 21/36] qtest: Avoid dynamic JSON in tmp105-test Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 22/36] qtest: Avoid dynamic JSON in pc-cpu-test Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 23/36] qtest: Avoid dynamic JSON in virtio-blk-test Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 24/36] qtest: Drop unused qmp_fdv() Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 25/36] qtest: Change qmp_fd_send() to drop varags Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 26/36] qtest: Drop unused qtest_qmp_async() Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 27/36] qtest: Avoid dynamic JSON in qmp_cmd() Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 28/36] qapi: Factor out JSON string escaping Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 29/36] qapi: Add qstring_append_printf() Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 30/36] qtest: Avoid dynamic JSON in qmp_fd_sendv() Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 31/36] qtest: Document calling conventions Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 32/36] qtest: Avoid dynamic JSON in qom-test Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 33/36] qtest: Avoid dynamic JSON in test-x86-cpuid-compat Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 34/36] qapi: Rip out dynamic JSON parser frontend Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 35/36] qapi: Rip out dynamic JSON parser escape sequence support Eric Blake
2016-11-30 19:44 ` [Qemu-devel] [PATCH 36/36] qapi: Rip out dynamic JSON parser backend Eric Blake
2016-11-30 19:50 ` [Qemu-devel] [PATCH 00/36] Rip out dynamic JSON parsing Eric Blake
2016-11-30 20:42   ` Paolo Bonzini

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=20161130231224-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=armbru@redhat.com \
    --cc=eblake@redhat.com \
    --cc=marcel@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.