• Stefan Hajnoczi's avatar
    rfifolock: add recursive FIFO lock · 2da61b67
    Stefan Hajnoczi authored
    QemuMutex does not guarantee fairness and cannot be acquired
    recursively:
    
    Fairness means each locker gets a turn and the scheduler cannot cause
    starvation.
    
    Recursive locking is useful for composition, it allows a sequence of
    locking operations to be invoked atomically by acquiring the lock around
    them.
    
    This patch adds RFifoLock, a recursive lock that guarantees FIFO order.
    Its first user is added in the next patch.
    
    RFifoLock has one additional feature: it can be initialized with an
    optional contention callback.  The callback is invoked whenever a thread
    must wait for the lock.  For example, it can be used to poke the current
    owner so that they release the lock soon.
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    2da61b67
rfifolock.c 1.88 KB