mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
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:
committed by
Paolo Bonzini
parent
856d72454f
commit
f08c03f3c4
+2
-3
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user