From: Thomas Huth <thuth@redhat.com>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>, qemu-devel@nongnu.org
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
"Daniel P. Berrangé" <berrange@redhat.com>,
qemu-arm@nongnu.org, "Alex Bennée" <alex.bennee@linaro.org>
Subject: Re: [RFC PATCH-for-9.0 01/11] qom: Introduce the TypeInfo::can_register() handler
Date: Thu, 23 Nov 2023 16:09:09 +0100 [thread overview]
Message-ID: <dc8664c2-c1d4-4e11-8bcd-9465a2d97174@redhat.com> (raw)
In-Reply-To: <20231122183048.17150-2-philmd@linaro.org>
On 22/11/2023 19.30, Philippe Mathieu-Daudé wrote:
> Add a helper to decide at runtime whether a type can
> be registered to the QOM framework or not.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> include/qom/object.h | 4 ++++
> qom/object.c | 3 +++
> 2 files changed, 7 insertions(+)
>
> diff --git a/include/qom/object.h b/include/qom/object.h
> index afccd24ca7..0d42fe17de 100644
> --- a/include/qom/object.h
> +++ b/include/qom/object.h
> @@ -372,6 +372,8 @@ struct Object
> * struct TypeInfo:
> * @name: The name of the type.
> * @parent: The name of the parent type.
> + * @can_register: This optional function is called before a type is registered.
> + * If it exists and returns false, the type is not registered.
The second sentence is quite hard to parse, since it is not quite clear what
"it" refers to (type or function) and what "registered" means in this
context (you don't mention type_register() here).
Maybe rather something like:
If set, type_register() uses this function to decide whether the type can be
registered or not.
?
> * @instance_size: The size of the object (derivative of #Object). If
> * @instance_size is 0, then the size of the object will be the size of the
> * parent object.
> @@ -414,6 +416,8 @@ struct TypeInfo
> const char *name;
> const char *parent;
>
> + bool (*can_register)(void);
> +
> size_t instance_size;
> size_t instance_align;
> void (*instance_init)(Object *obj);
> diff --git a/qom/object.c b/qom/object.c
> index 95c0dc8285..f09b6b5a92 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -150,6 +150,9 @@ static TypeImpl *type_register_internal(const TypeInfo *info)
> TypeImpl *type_register(const TypeInfo *info)
> {
> assert(info->parent);
> + if (info->can_register && !info->can_register()) {
> + return NULL;
> + }
I have to say that I don't like it too much, since you're trying to fix a
problem here in common code that clearly belongs to the code in hw/arm/ instead.
What about dropping it, and changing your last patch to replace the
DEFINE_TYPES(raspi_machine_types) in hw/arm/raspi.c with your own
implementation of type_register_static_array() that checks the condition there?
Thomas
next prev parent reply other threads:[~2023-11-23 15:10 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-22 18:30 [PATCH-for-9.0 00/11] hw/arm: Step toward building qemu-system-{arm, aarch64} altogether Philippe Mathieu-Daudé
2023-11-22 18:30 ` [RFC PATCH-for-9.0 01/11] qom: Introduce the TypeInfo::can_register() handler Philippe Mathieu-Daudé
2023-11-23 15:09 ` Thomas Huth [this message]
2023-11-23 16:03 ` Philippe Mathieu-Daudé
2023-11-23 16:24 ` Thomas Huth
2023-11-23 17:30 ` Philippe Mathieu-Daudé
2023-11-22 18:30 ` [RFC PATCH-for-9.0 02/11] target/arm: Add target_aarch64_available() helper Philippe Mathieu-Daudé
2023-11-23 10:00 ` Philippe Mathieu-Daudé
2023-11-22 18:30 ` [PATCH-for-9.0 03/11] target/arm: Declare ARM_CPU_TYPE_NAME/SUFFIX in 'cpu-qom.h' Philippe Mathieu-Daudé
2023-11-28 13:59 ` Richard Henderson
2023-11-22 18:30 ` [PATCH-for-9.0 04/11] target/arm: Move ARM_CPU_IRQ/FIQ definitions to 'cpu-qom.h' Philippe Mathieu-Daudé
2023-11-28 14:00 ` Richard Henderson
2023-11-22 18:30 ` [PATCH-for-9.0 05/11] target/arm: Move GTIMER definitions to 'cpu-defs.h' Philippe Mathieu-Daudé
2023-11-28 14:02 ` Richard Henderson
2023-11-28 16:32 ` Philippe Mathieu-Daudé
2023-11-22 18:30 ` [PATCH-for-9.0 06/11] hw/arm/bcm2836: Simplify use of 'reset-cbar' property Philippe Mathieu-Daudé
2023-11-28 14:03 ` Richard Henderson
2023-11-22 18:30 ` [PATCH-for-9.0 07/11] hw/arm/bcm2836: Simplify access to 'start-powered-off' property Philippe Mathieu-Daudé
2023-11-28 14:03 ` Richard Henderson
2023-11-22 18:30 ` [PATCH-for-9.0 08/11] hw/arm/bcm2836: Use ARM_CPU 'mp-affinity' property Philippe Mathieu-Daudé
2023-11-28 14:04 ` Richard Henderson
2023-11-22 18:30 ` [RFC PATCH-for-9.0 09/11] hw/arm/bcm2836: Allocate ARM CPU state with object_new() Philippe Mathieu-Daudé
2023-11-28 14:06 ` Richard Henderson
2023-11-22 18:30 ` [RFC PATCH-for-9.0 10/11] hw/arm/raspi: Build bcm2836.o and raspi.o objects once Philippe Mathieu-Daudé
2023-11-22 18:30 ` [RFC PATCH-for-9.0 11/11] hw/intc/meson: Simplify how arm_gicv3_kvm.o objects are built Philippe Mathieu-Daudé
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=dc8664c2-c1d4-4e11-8bcd-9465a2d97174@redhat.com \
--to=thuth@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=berrange@redhat.com \
--cc=eduardo@habkost.net \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.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).