Commit f08c03f3 authored by Jan Kiszka's avatar Jan Kiszka Committed by Paolo Bonzini
Browse files

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: default avatarLiu Ping Fan <qemulist@gmail.com>
Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 856d7245
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -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);
    }
}