]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: Introduce virObjectGetLockableObj
authorJohn Ferlan <jferlan@redhat.com>
Wed, 29 Mar 2017 20:21:31 +0000 (16:21 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Thu, 22 Jun 2017 13:34:40 +0000 (09:34 -0400)
Split out the object fetch in virObject{Lock|Unlock} into a helper

Signed-off-by: John Ferlan <jferlan@redhat.com>
src/util/virobject.c

index 792685b98bf820a9c45bae4d2a47eed342987c84..34805d34afd6bbadc98317fd666c42e5bed3f6da 100644 (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);
 }