1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

util: Introduce virObjectGetLockableObj

Split out the object fetch in virObject{Lock|Unlock} into a helper

Signed-off-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
John Ferlan 2017-03-29 16:21:31 -04:00
parent 209a95e354
commit 10c2bb2b19

View File

@ -309,6 +309,22 @@ virObjectRef(void *anyobj)
}
static virObjectLockablePtr
virObjectGetLockableObj(void *anyobj)
{
virObjectPtr obj;
if (virObjectIsClass(anyobj, virObjectLockableClass))
return anyobj;
obj = anyobj;
VIR_WARN("Object %p (%s) is not a virObjectLockable instance",
anyobj, obj ? obj->klass->name : "(unknown)");
return NULL;
}
/**
* virObjectLock:
* @anyobj: any instance of virObjectLockablePtr
@ -324,13 +340,10 @@ virObjectRef(void *anyobj)
void
virObjectLock(void *anyobj)
{
virObjectLockablePtr obj = anyobj;
virObjectLockablePtr obj = virObjectGetLockableObj(anyobj);
if (!virObjectIsClass(obj, virObjectLockableClass)) {
VIR_WARN("Object %p (%s) is not a virObjectLockable instance",
obj, obj ? obj->parent.klass->name : "(unknown)");
if (!obj)
return;
}
virMutexLock(&obj->lock);
}
@ -346,13 +359,10 @@ virObjectLock(void *anyobj)
void
virObjectUnlock(void *anyobj)
{
virObjectLockablePtr obj = anyobj;
virObjectLockablePtr obj = virObjectGetLockableObj(anyobj);
if (!virObjectIsClass(obj, virObjectLockableClass)) {
VIR_WARN("Object %p (%s) is not a virObjectLockable instance",
obj, obj ? obj->parent.klass->name : "(unknown)");
if (!obj)
return;
}
virMutexUnlock(&obj->lock);
}