From: Eduardo Habkost <ehabkost@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, "Igor Mammedov" <imammedo@redhat.com>,
"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH v4 5/8] qdev: Register static properties as class properties
Date: Fri, 4 Nov 2016 14:00:01 -0200 [thread overview]
Message-ID: <20161104160001.GI5057@thinpad.lan.raisama.net> (raw)
In-Reply-To: <87ins35kxr.fsf@dusky.pond.sub.org>
On Fri, Nov 04, 2016 at 04:22:40PM +0100, Markus Armbruster wrote:
> Eduardo Habkost <ehabkost@redhat.com> writes:
>
> > Instead of registering qdev static properties on instance_init,
> > register them as class properties, at qdev_class_set_props().
> >
> > qdev_property_add_legacy() was replaced by an equivalent
> > qdev_class_property_add_legacy() function.
> > qdev_property_add_static(), on the other hand, can't be
> > eliminated yet because it is used by arm_cpu_post_init().
> >
> > As class properties don't have a release function called when an
> > object instance is destroyed, the release functions for
> > properties are called manually from device_finalize().
>
> Ignorant question: should class properties have such a release function?
I don't think they need one (because it is not possible to
destroy classes yet). Even if they should, most of the existing
QOM release functions are not meant to be called every time an
object is destroyed (but still get Object* as argument, which is
confusing).
qdev property release functions, on the other hand, are actually
meant to be called every time an object is destroyed.
(Confusing, uh?)
I have patches to remove the release function and to clarify the
intent of qdev release functions. I just didn't include them in
this series to keep it simpler.
>
> Hmm, I see object_class_property_add() does take a release(). Is that
> one called at the wrong time?
The function is actually never called. I thought they were meant
to be called when the object is destroyed, but most (but not
all?) of the existing release functions are meant to be called to
release its void* opaque pointer (so they were really supposed to
be called only if the class is being destroyed).
>
> One typo noted below.
>
[...]
> > + /* Note: prop->info->release is called on device_finalize(),
> > + * because it needs to be called on instaqnce destruction, not on
>
> instance
Thanks. I will fix it in the next version.
--
Eduardo
next prev parent reply other threads:[~2016-11-04 16:00 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-29 1:47 [Qemu-devel] [PATCH v4 0/8] qdev class properties + abstract class support on device-list-properties Eduardo Habkost
2016-10-29 1:48 ` [Qemu-devel] [PATCH v4 1/8] tests: check-qom-proplist: Remove duplicate "bv" property Eduardo Habkost
2016-11-04 11:22 ` Markus Armbruster
2016-11-04 15:10 ` Markus Armbruster
2016-11-04 15:56 ` Andreas Färber
2016-11-04 16:07 ` Eduardo Habkost
2016-11-04 16:11 ` Andreas Färber
2016-10-29 1:48 ` [Qemu-devel] [PATCH v4 2/8] tests: check-qom-proplist: Use &error_abort to catch errors Eduardo Habkost
2016-10-31 10:14 ` Igor Mammedov
2016-10-29 1:48 ` [Qemu-devel] [PATCH v4 3/8] qdev: device_class_set_props() function Eduardo Habkost
2016-11-01 15:02 ` Igor Mammedov
2016-10-29 1:48 ` [Qemu-devel] [PATCH v4 4/8] qdev: Extract property-default code to qdev_property_set_to_default() Eduardo Habkost
2016-10-29 1:48 ` [Qemu-devel] [PATCH v4 5/8] qdev: Register static properties as class properties Eduardo Habkost
2016-10-31 12:06 ` Igor Mammedov
2016-11-04 15:22 ` Markus Armbruster
2016-11-04 16:00 ` Eduardo Habkost [this message]
2016-10-29 1:48 ` [Qemu-devel] [PATCH v4 6/8] qom: object_class_property_iter_init() function Eduardo Habkost
2016-10-31 13:45 ` Igor Mammedov
2016-11-04 15:31 ` Markus Armbruster
2016-10-29 1:48 ` [Qemu-devel] [PATCH v4 7/8] qmp: Support abstract classes on device-list-properties Eduardo Habkost
2016-10-31 14:07 ` Igor Mammedov
2016-10-31 14:36 ` Eduardo Habkost
2016-11-04 15:45 ` Markus Armbruster
2016-11-04 16:04 ` Eduardo Habkost
2016-11-07 8:09 ` Markus Armbruster
2016-11-07 12:38 ` Eduardo Habkost
2016-11-07 14:40 ` Markus Armbruster
2016-11-07 17:11 ` Eduardo Habkost
2016-11-08 7:29 ` Markus Armbruster
2016-11-11 12:17 ` Jiri Denemark
2016-11-11 12:34 ` Eduardo Habkost
2016-11-11 14:29 ` Markus Armbruster
2016-11-07 12:45 ` Halil Pasic
2016-11-07 13:05 ` Eduardo Habkost
2016-11-07 14:48 ` Halil Pasic
2016-11-07 15:01 ` Daniel P. Berrange
2016-11-07 15:51 ` Markus Armbruster
2016-11-07 17:27 ` Eduardo Habkost
2016-11-07 17:41 ` Daniel P. Berrange
2016-11-07 18:03 ` Eduardo Habkost
2016-11-07 18:08 ` Daniel P. Berrange
2016-11-07 18:28 ` Eduardo Habkost
2016-11-08 7:37 ` Markus Armbruster
2016-11-08 10:09 ` Daniel P. Berrange
2016-11-08 14:35 ` Markus Armbruster
2016-11-08 16:16 ` Eduardo Habkost
2016-11-08 10:11 ` Halil Pasic
2016-10-29 1:48 ` [Qemu-arm] [PATCH v4 8/8] qdev: Warning about using qdev_property_add_static() in new code Eduardo Habkost
2016-10-29 1:48 ` [Qemu-devel] " Eduardo Habkost
2016-10-31 14:05 ` [Qemu-arm] " Igor Mammedov
2016-10-31 14:05 ` [Qemu-devel] " Igor Mammedov
2016-11-04 15:52 ` [Qemu-devel] [PATCH v4 0/8] qdev class properties + abstract class support on device-list-properties Markus Armbruster
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=20161104160001.GI5057@thinpad.lan.raisama.net \
--to=ehabkost@redhat.com \
--cc=afaerber@suse.de \
--cc=armbru@redhat.com \
--cc=imammedo@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.