mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-31 14:23:49 +01:00
Add three (generic) mutex fastpath implementations. The mutex-xchg.h implementation is atomic_xchg() based, and should work fine on every architecture. The mutex-dec.h implementation is atomic_dec_return() based - this one too should work on every architecture, but might not perform the most optimally on architectures that have no atomic-dec/inc instructions. The mutex-null.h implementation forces all calls into the slowpath. This is used for mutex debugging, but it can also be used on platforms that do not want (or need) a fastpath at all. Signed-off-by: Ingo Molnar <[email protected]> Signed-off-by: Arjan van de Ven <[email protected]>
25 lines
806 B
C
25 lines
806 B
C
/*
|
|
* asm-generic/mutex-null.h
|
|
*
|
|
* Generic implementation of the mutex fastpath, based on NOP :-)
|
|
*
|
|
* This is used by the mutex-debugging infrastructure, but it can also
|
|
* be used by architectures that (for whatever reason) want to use the
|
|
* spinlock based slowpath.
|
|
*/
|
|
#ifndef _ASM_GENERIC_MUTEX_NULL_H
|
|
#define _ASM_GENERIC_MUTEX_NULL_H
|
|
|
|
/* extra parameter only needed for mutex debugging: */
|
|
#ifndef __IP__
|
|
# define __IP__
|
|
#endif
|
|
|
|
#define __mutex_fastpath_lock(count, fail_fn) fail_fn(count __RET_IP__)
|
|
#define __mutex_fastpath_lock_retval(count, fail_fn) fail_fn(count __RET_IP__)
|
|
#define __mutex_fastpath_unlock(count, fail_fn) fail_fn(count __RET_IP__)
|
|
#define __mutex_fastpath_trylock(count, fail_fn) fail_fn(count)
|
|
#define __mutex_slowpath_needs_to_unlock() 1
|
|
|
|
#endif
|