mirror of https://gitee.com/openkylin/qemu.git
qom: Use atomics for object refcounting
Object reference counts will soon be changed outside the BQL. So we need to use atomics in object_ref/unref. Based on a patch by Liu Ping Fan. Signed-off-by: Liu Ping Fan <qemulist@gmail.com> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
856d72454f
commit
f08c03f3c4
|
@ -683,16 +683,15 @@ GSList *object_class_get_list(const char *implements_type,
|
|||
|
||||
void object_ref(Object *obj)
|
||||
{
|
||||
obj->ref++;
|
||||
atomic_inc(&obj->ref);
|
||||
}
|
||||
|
||||
void object_unref(Object *obj)
|
||||
{
|
||||
g_assert(obj->ref > 0);
|
||||
obj->ref--;
|
||||
|
||||
/* parent always holds a reference to its children */
|
||||
if (obj->ref == 0) {
|
||||
if (atomic_fetch_dec(&obj->ref) == 1) {
|
||||
object_finalize(obj);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue