Typical usage:
void foobar(virObjectLockable *obj)
{
VIR_LOCK_GUARD lock = virObjectLockGuard(obj);
/* `obj` is locked, and released automatically on scope exit */
...
}
Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
virObjectListFreeCount;
virObjectLock;
virObjectLockableNew;
+virObjectLockGuard;
virObjectNew;
virObjectRef;
virObjectRWLockableNew;
}
+/**
+ * virObjectLockGuard:
+ * @anyobj: any instance of virObjectLockable
+ *
+ * Acquire a lock on @anyobj that will be managed by the virLockGuard object
+ * returned to the caller.
+ */
+virLockGuard
+virObjectLockGuard(void *anyobj)
+{
+ virObjectLockable *obj = virObjectGetLockableObj(anyobj);
+
+ return virLockGuardLock(&obj->lock);
+}
+
+
/**
* virObjectLock:
* @anyobj: any instance of virObjectLockable
virObjectRWLockableNew(virClass *klass)
ATTRIBUTE_NONNULL(1);
+virLockGuard
+virObjectLockGuard(void *lockableobj)
+ ATTRIBUTE_NONNULL(1);
+
void
virObjectLock(void *lockableobj)
ATTRIBUTE_NONNULL(1);