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;
|
||||
virObjectLock;
|
||||
virObjectLockableNew;
|
||||
virObjectLockGuard;
|
||||
virObjectNew;
|
||||
virObjectRef;
|
||||
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:
|
||||
* @anyobj: any instance of virObjectLockable
|
||||
|
@ -118,6 +118,10 @@ void *
|
||||
virObjectRWLockableNew(virClass *klass)
|
||||
ATTRIBUTE_NONNULL(1);
|
||||
|
||||
virLockGuard
|
||||
virObjectLockGuard(void *lockableobj)
|
||||
ATTRIBUTE_NONNULL(1);
|
||||
|
||||
void
|
||||
virObjectLock(void *lockableobj)
|
||||
ATTRIBUTE_NONNULL(1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user