From: Markus Armbruster <armbru@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: "Kevin Wolf" <kwolf@redhat.com>,
qemu-devel@nongnu.org, "Hanna Reitz" <hreitz@redhat.com>,
"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
"Michael Tokarev" <mjt@tls.msk.ru>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Eduardo Habkost" <ehabkost@gmail.com>
Subject: The case for array properties (was: [PULL 14/15] qdev: Base object creation on QDict rather than QemuOpts)
Date: Fri, 08 Jul 2022 13:40:43 +0200 [thread overview]
Message-ID: <87y1x37ryc.fsf_-_@pond.sub.org> (raw)
In-Reply-To: <CAFEAcA_cYpt_FU5mD+X+BSmQq9e6u1n+nm8EVfdrPeVN0o3Spw@mail.gmail.com> (Peter Maydell's message of "Thu, 7 Jul 2022 21:24:09 +0100")
Cc'ing QOM maintainers.
Peter Maydell <peter.maydell@linaro.org> writes:
> On Mon, 4 Jul 2022 at 05:50, Markus Armbruster <armbru@redhat.com> wrote:
>> My initial (knee-jerk) reaction to breaking array properties: Faster,
>> Pussycat! Kill! Kill!
>
> In an ideal world, what would you replace them with?
Let's first recapitulate their intended purpose.
commit 339659041f87a76f8b71ad3d12cadfc5f89b4bb3q
Author: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Date: Tue Aug 19 23:55:52 2014 -0700
qom: Add automatic arrayification to object_property_add()
If "[*]" is given as the last part of a QOM property name, treat that
as an array property. The added property is given the first available
name, replacing the * with a decimal number counting from 0.
First add with name "foo[*]" will be "foo[0]". Second "foo[1]" and so
on.
Callers may inspect the ObjectProperty * return value to see what
number the added property was given.
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
This describes how they work, but sadly not why we want them. For such
arcane lore, we need to consult a guru. Possibly via the mailing list
archive.
Digression: when you add a feature, please, please, *please* explain why
you need it right in the commit message. Such rationale is useful
information, tends to age well, and can be quite laborious to
reconstruct later.
Even though I'm sure we discussed the intended purpose(s) of array
properties before, a quick grep of my list archive comes up mostly
empty, so I'm falling back to (foggy) memory. Please correct mistakes
and fill in omissions.
We occasionally have a need for an array of properties where the length
of the array is not fixed at compile time. Say in code common to
several related devices, where some have two frobs, some four, and a
future one may have some other number.
We could define properties frob0, frob1, ... frobN for some fixed N.
Users have to set them like frob0=...,frob1=... and so forth. We need
code to reject frobI=... for I exeeding the actual limit.
Array properties spare developers picking a fixed N, and users adding an
index to the property name. Whether the latter is a good idea is
unclear. We need code to reject usage exceeding the actual limit.
A secondary use is (was?) avoiding memory region name clashes in code we
don't want to touch. Discussed in the review of my attempt to strangle
array properties in 2014:
Message-ID: <87sihn9nji.fsf@blackfin.pond.sub.org>
https://lists.gnu.org/archive/html/qemu-devel/2014-11/msg02103.html
next prev parent reply other threads:[~2022-07-08 11:42 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-15 14:46 [PULL 00/15] qdev: Add JSON -device Kevin Wolf
2021-10-15 14:46 ` [PULL 01/15] net: Introduce NetClientInfo.check_peer_type() Kevin Wolf
2021-10-15 14:46 ` [PULL 02/15] net/vhost-user: Fix device compatibility check Kevin Wolf
2021-10-15 14:46 ` [PULL 03/15] net/vhost-vdpa: " Kevin Wolf
2021-10-15 14:46 ` [PULL 04/15] qom: Reduce use of error_propagate() Kevin Wolf
2021-10-15 14:46 ` [PULL 05/15] iotests/245: Fix type for iothread property Kevin Wolf
2021-10-15 14:46 ` [PULL 06/15] iotests/051: Fix typo Kevin Wolf
2021-10-15 14:46 ` [PULL 07/15] qdev: Avoid using string visitor for properties Kevin Wolf
2021-10-15 14:46 ` [PULL 08/15] qdev: Make DeviceState.id independent of QemuOpts Kevin Wolf
2021-10-15 14:46 ` [PULL 09/15] softmmu/qdev-monitor: add error handling in qdev_set_id Kevin Wolf
2021-10-15 14:46 ` [PULL 10/15] qemu-option: Allow deleting opts during qemu_opts_foreach() Kevin Wolf
2021-10-15 14:46 ` [PULL 11/15] qdev: Add Error parameter to hide_device() callbacks Kevin Wolf
2021-10-15 14:46 ` [PULL 12/15] virtio-net: Store failover primary opts pointer locally Kevin Wolf
2021-10-15 14:46 ` [PULL 13/15] virtio-net: Avoid QemuOpts in failover_find_primary_device() Kevin Wolf
2021-10-15 14:46 ` [PULL 14/15] qdev: Base object creation on QDict rather than QemuOpts Kevin Wolf
2022-07-01 13:37 ` Peter Maydell
2022-07-04 4:49 ` Markus Armbruster
2022-07-05 9:57 ` Markus Armbruster
2022-07-07 20:24 ` Peter Maydell
2022-07-08 11:40 ` Markus Armbruster [this message]
2022-07-08 11:50 ` The case for array properties (was: [PULL 14/15] qdev: Base object creation on QDict rather than QemuOpts) Daniel P. Berrangé
2022-07-08 12:41 ` The case for array properties Markus Armbruster
2022-07-11 10:48 ` The case for array properties (was: [PULL 14/15] qdev: Base object creation on QDict rather than QemuOpts) Peter Maydell
2022-07-27 19:59 ` [PULL 14/15] qdev: Base object creation on QDict rather than QemuOpts Kevin Wolf
2021-10-15 14:46 ` [PULL 15/15] vl: Enable JSON syntax for -device Kevin Wolf
2021-10-15 20:26 ` [PULL 00/15] qdev: Add JSON -device Richard Henderson
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=87y1x37ryc.fsf_-_@pond.sub.org \
--to=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=ehabkost@gmail.com \
--cc=hreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=mjt@tls.msk.ru \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--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.