]> git.ipfire.org Git - thirdparty/libvirt.git/commit
virthread: Introduce virLockGuard
authorTim Wiederhake <twiederh@redhat.com>
Wed, 25 Aug 2021 08:25:32 +0000 (10:25 +0200)
committerTim Wiederhake <twiederh@redhat.com>
Tue, 1 Feb 2022 16:19:23 +0000 (17:19 +0100)
commitd00d078968ed26629d6c3f7691e7521c2700caba
treeee378b7d1e065cf0482f7154122fd817948c69fb
parent3f19e116cd57c89bf93d1bab1aced640b490e850
virthread: Introduce virLockGuard

Locks a virMutex on creation and unlocks it in its destructor.

The VIR_LOCK_GUARD macro is used instead of "g_auto(virLockGuard)" to
work around a clang issue (see https://bugs.llvm.org/show_bug.cgi?id=3888
and https://bugs.llvm.org/show_bug.cgi?id=43482).

Typical usage:

    void function(virMutex *m)
    {
        VIR_LOCK_GUARD lock = virLockGuardLock(m);
        /* `m` is locked, and released automatically on scope exit */

        ...
        while (expression) {
            VIR_LOCK_GUARD lock2 = virLockGuardLock(...);
            /* similar */
        }
    }

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
src/libvirt_private.syms
src/util/virthread.c
src/util/virthread.h