mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
virobject: Introduce virObjectLockGuard
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>
This commit is contained in:
parent
2075195d70
commit
8935c8397c
@ -2956,6 +2956,7 @@ virObjectListFree;
|
|||||||
virObjectListFreeCount;
|
virObjectListFreeCount;
|
||||||
virObjectLock;
|
virObjectLock;
|
||||||
virObjectLockableNew;
|
virObjectLockableNew;
|
||||||
|
virObjectLockGuard;
|
||||||
virObjectNew;
|
virObjectNew;
|
||||||
virObjectRef;
|
virObjectRef;
|
||||||
virObjectRWLockableNew;
|
virObjectRWLockableNew;
|
||||||
|
@ -426,6 +426,22 @@ virObjectGetRWLockableObj(void *anyobj)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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:
|
* virObjectLock:
|
||||||
* @anyobj: any instance of virObjectLockable
|
* @anyobj: any instance of virObjectLockable
|
||||||
|
@ -118,6 +118,10 @@ void *
|
|||||||
virObjectRWLockableNew(virClass *klass)
|
virObjectRWLockableNew(virClass *klass)
|
||||||
ATTRIBUTE_NONNULL(1);
|
ATTRIBUTE_NONNULL(1);
|
||||||
|
|
||||||
|
virLockGuard
|
||||||
|
virObjectLockGuard(void *lockableobj)
|
||||||
|
ATTRIBUTE_NONNULL(1);
|
||||||
|
|
||||||
void
|
void
|
||||||
virObjectLock(void *lockableobj)
|
virObjectLock(void *lockableobj)
|
||||||
ATTRIBUTE_NONNULL(1);
|
ATTRIBUTE_NONNULL(1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user