[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 06/22] char: add a /chardevs container
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 06/22] char: add a /chardevs container |
Date: |
Thu, 9 Feb 2017 18:16:03 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 |
On 07/02/2017 21:03, Marc-André Lureau wrote:
> Hi
>
> ----- Original Message -----
>>
>>
>> On 02/02/2017 15:51, Marc-André Lureau wrote:
>>> + if (QTAILQ_IN_USE(chr, next)) {
>>> + QTAILQ_REMOVE(&chardevs, chr, next);
>>> + }
>>> + if (OBJECT(chr)->parent) {
>>> + object_unparent(OBJECT(chr));
>>> + } else {
>>> + object_unref(OBJECT(chr));
>>> + }
>>
>> What's the case where the "else" is used? Probably qemu_chr_delete
>> callers should be changed to use object_unparent or object_unref directly.
>
> I thought about that, but calling object_unparent() seems weird,
> since callers aren't much aware of the fact that chardev are added or not to a
> container (useless distinction imho). I wish the last object_unref()
> would automatically unparent, if the object has a parent. Would that be
> acceptable?
There is a distinction between the two. The idea is that unparent
removes all persistent references in the object tree, while unref only
removes transient references. So for example unparent will detach a
device from its bus. Unparent is basically exploiting the object tree
in order to simplify the handling of reference cycles.
Once you add an object with object_property_add_child, you probably
should remove any transient references you have (such as the one you got
with object_new) and from that point on use object_unparent only.
Paolo
- [Qemu-devel] [PATCH 03/22] xen: use a better chardev type check, (continued)
- [Qemu-devel] [PATCH 06/22] char: add a /chardevs container, Marc-André Lureau, 2017/02/02
- Re: [Qemu-devel] [PATCH 06/22] char: add a /chardevs container, Paolo Bonzini, 2017/02/06
- Re: [Qemu-devel] [PATCH 06/22] char: add a /chardevs container, Marc-André Lureau, 2017/02/07
- Re: [Qemu-devel] [PATCH 06/22] char: add a /chardevs container,
Paolo Bonzini <=
- Re: [Qemu-devel] [PATCH 06/22] char: add a /chardevs container, Marc-André Lureau, 2017/02/10
- Re: [Qemu-devel] [PATCH 06/22] char: add a /chardevs container, Paolo Bonzini, 2017/02/10
- Re: [Qemu-devel] [PATCH 06/22] char: add a /chardevs container, Marc-André Lureau, 2017/02/10
- Re: [Qemu-devel] [PATCH 06/22] char: add a /chardevs container, Paolo Bonzini, 2017/02/10
[Qemu-devel] [PATCH 07/22] char: use /chardevs container instead of chardevs list, Marc-André Lureau, 2017/02/02
[Qemu-devel] [PATCH 08/22] char: remove qemu_chardev_add, Marc-André Lureau, 2017/02/02
[Qemu-devel] [PATCH 09/22] char: remove chardevs list, Marc-André Lureau, 2017/02/02
[Qemu-devel] [PATCH 10/22] char: useless NULL check, Marc-André Lureau, 2017/02/02
[Qemu-devel] [PATCH 11/22] qcow2: remove useless NULL check, Marc-André Lureau, 2017/02/02