On Mon, Jan 20, 2014 at 06:22:28PM +0800, Fam Zheng wrote: > On Fri, 01/10 09:45, Stefan Hajnoczi wrote: > > 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. > > > > Is it better to make the contention callback per-caller than per-lock? > Considering that different caller may want to do different things depending on > current code path.
Perhaps it will make sense to change it in the future. For now it means callers use the standard lock/unlock function. They don't have to know what actions are needed to poke the current lock-holder.