qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: qemu-devel@nongnu.org, lersek@redhat.com
Subject: [Qemu-devel] [PATCH v3 00/18] introduce OptsVisitor, rebase -net/-netdev parsing
Date: Tue, 17 Jul 2012 16:17:03 +0200	[thread overview]
Message-ID: <1342534641-22450-1-git-send-email-lersek@redhat.com> (raw)

The first two patches clean up error propagation and enable the release of
incompletely parsed/created objects. A new test case is added as well.

Inspired by [1], patches 3-6 add a new visitor that should simplify
defining and processing command line options. For a more detailed
description, please see "[PATCH v3 06/18] qapi: introduce OptsVisitor".

The rest converts -net/-netdev parsing to the new visitor.

v1->v2:
- Insert a small patch between v1 01/16 and v1 02/16 in order to generate
  C types for fixed-width integers.
- Tighten / clean up integer types in Netdev options and in OptsVisitor.
- NetLegacy::name is optional.
- Changes are marked below individually and described separately.
- (Rebase to current master.)

v2->v3:
- Instead of examining, assert that we never overwrite errors with
  error_set().
- Allow visitors to set a NULL struct pointer successfully, so traversal
  of incomplete objects can continue.
- Check for a NULL "obj" before accessing "(*obj)->has_XXX" (this is not a
  typo, "obj != NULL" implies "*obj != NULL" here).
- Fix start_struct / end_struct balance for unions as well.
- Add test case for deallocating traversal of incomplete structure.
- Factor opts_visitor_insert() out of opts_start_struct() and call it
  separately for opts_root->id if there's any.
- Don't require non-negative values in opts_type_int()'s error message.
- g_malloc0() may return NULL for zero-sized requests. Support empty
  structures by requesting 1 byte for them instead.
- NetLegacy::id is allowed and takes precedence over NetLegacy::name.
- Replace "@traits" with "@opts" in NetLegacy & Netdev descriptions.
- Keep "qemu-option.h" included in "net/slirp.h".

[1] http://lists.nongnu.org/archive/html/qemu-devel/2012-04/msg02512.html

Laszlo Ersek (17):
  qapi: add test case for deallocating traversal of incomplete structure [new]
  qapi: generate C types for fixed-width integers
  qapi: introduce "size" type
  expose QemuOpt and QemuOpts struct definitions to interested parties
  qapi: introduce OptsVisitor                                            [v3]
  qapi schema: remove trailing whitespace
  qapi schema: add Netdev types                                          [v3]
  hw, net: "net_client_type" -> "NetClientOptionsKind" (qapi-generated)
  convert net_client_init() to OptsVisitor                               [v3]
  convert net_init_nic() to NetClientOptions
  convert net_init_dump() to NetClientOptions
  convert net_init_slirp() to NetClientOptions
  convert net_init_socket() to NetClientOptions
  convert net_init_vde() to NetClientOptions
  convert net_init_tap() to NetClientOptions
  convert net_init_bridge() to NetClientOptions
  remove unused QemuOpts parameter from net init functions               [v3]

Paolo Bonzini (1):
  qapi: fix error propagation                                            [v3]

 error.h                        |    2 +-
 net.h                          |   16 +--
 net/dump.h                     |    5 +-
 net/slirp.h                    |    4 +-
 net/socket.h                   |    5 +-
 net/tap.h                      |   10 +-
 net/vde.h                      |    5 +-
 qapi/opts-visitor.h            |   31 +++
 qapi/qapi-visit-core.h         |    3 +
 qemu-option-internal.h         |   53 +++++
 error.c                        |    3 +-
 hw/cadence_gem.c               |    2 +-
 hw/dp8393x.c                   |    2 +-
 hw/e1000.c                     |    2 +-
 hw/eepro100.c                  |    2 +-
 hw/etraxfs_eth.c               |    2 +-
 hw/lan9118.c                   |    2 +-
 hw/lance.c                     |    2 +-
 hw/mcf_fec.c                   |    2 +-
 hw/milkymist-minimac2.c        |    2 +-
 hw/mipsnet.c                   |    2 +-
 hw/musicpal.c                  |    2 +-
 hw/ne2000-isa.c                |    2 +-
 hw/ne2000.c                    |    2 +-
 hw/opencores_eth.c             |    2 +-
 hw/pcnet-pci.c                 |    2 +-
 hw/rtl8139.c                   |    2 +-
 hw/smc91c111.c                 |    2 +-
 hw/spapr_llan.c                |    2 +-
 hw/stellaris_enet.c            |    2 +-
 hw/usb/dev-network.c           |    2 +-
 hw/vhost_net.c                 |    2 +-
 hw/virtio-net.c                |   10 +-
 hw/xen_nic.c                   |    2 +-
 hw/xgmac.c                     |    2 +-
 hw/xilinx_axienet.c            |    2 +-
 hw/xilinx_ethlite.c            |    2 +-
 net.c                          |  494 +++++++++++-----------------------------
 net/dump.c                     |   24 ++-
 net/slirp.c                    |   96 +++------
 net/socket.c                   |  124 ++++-------
 net/tap-aix.c                  |    2 +-
 net/tap-bsd.c                  |    2 +-
 net/tap-haiku.c                |    2 +-
 net/tap-linux.c                |    9 +-
 net/tap-solaris.c              |    2 +-
 net/tap-win32.c                |   14 +-
 net/tap.c                      |  152 ++++++------
 net/vde.c                      |   20 +-
 qapi/opts-visitor.c            |  427 ++++++++++++++++++++++++++++++++++
 qapi/qapi-visit-core.c         |   17 +-
 qemu-option.c                  |   24 +--
 tests/test-qmp-commands.c      |   42 ++++
 tests/test-qmp-input-visitor.c |   24 ++-
 docs/qapi-code-gen.txt         |    2 +
 qapi-schema.json               |  288 +++++++++++++++++++++++-
 qapi/Makefile.objs             |    2 +-
 scripts/qapi-visit.py          |  150 ++++++++-----
 scripts/qapi.py                |    6 +
 59 files changed, 1350 insertions(+), 770 deletions(-)
 create mode 100644 qapi/opts-visitor.h
 create mode 100644 qemu-option-internal.h
 create mode 100644 qapi/opts-visitor.c

             reply	other threads:[~2012-07-17 14:16 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-17 14:17 Laszlo Ersek [this message]
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 01/18] qapi: fix error propagation Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 02/18] qapi: add test case for deallocating traversal of incomplete structure Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 03/18] qapi: generate C types for fixed-width integers Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 04/18] qapi: introduce "size" type Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 05/18] expose QemuOpt and QemuOpts struct definitions to interested parties Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 06/18] qapi: introduce OptsVisitor Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 07/18] qapi schema: remove trailing whitespace Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 08/18] qapi schema: add Netdev types Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 09/18] hw, net: "net_client_type" -> "NetClientOptionsKind" (qapi-generated) Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 10/18] convert net_client_init() to OptsVisitor Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 11/18] convert net_init_nic() to NetClientOptions Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 12/18] convert net_init_dump() " Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 13/18] convert net_init_slirp() " Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 14/18] convert net_init_socket() " Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 15/18] convert net_init_vde() " Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 16/18] convert net_init_tap() " Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 17/18] convert net_init_bridge() " Laszlo Ersek
2012-07-17 14:17 ` [Qemu-devel] [PATCH v3 18/18] remove unused QemuOpts parameter from net init functions Laszlo Ersek
2012-07-20  9:12 ` [Qemu-devel] [PATCH v3 00/18] introduce OptsVisitor, rebase -net/-netdev parsing Stefan Hajnoczi

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=1342534641-22450-1-git-send-email-lersek@redhat.com \
    --to=lersek@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 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).