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:
parent
209a95e354
commit
10c2bb2b19
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user