diff options
author | Ingo Molnar <mingo@elte.hu> | 2006-01-09 18:59:17 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@hera.kernel.org> | 2006-01-09 18:59:17 -0500 |
commit | 620a6fd185c084aa617c411f711533f01ea673c9 (patch) | |
tree | 3ab1a296a2cd952bc3dd602fc5dd2ada9288b2c4 /include/asm-generic/mutex-null.h | |
parent | 711a660dc2064013a2b0167ee67389707fc9cac3 (diff) |
[PATCH] mutex subsystem, add asm-generic/mutex-[dec|xchg|null].h implementations
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 <mingo@elte.hu>
Signed-off-by: Arjan van de Ven <arjan@infradead.org>
Diffstat (limited to 'include/asm-generic/mutex-null.h')
-rw-r--r-- | include/asm-generic/mutex-null.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/include/asm-generic/mutex-null.h b/include/asm-generic/mutex-null.h new file mode 100644 index 000000000000..5cf8b7ce0c45 --- /dev/null +++ b/include/asm-generic/mutex-null.h | |||
@@ -0,0 +1,24 @@ | |||
1 | /* | ||
2 | * asm-generic/mutex-null.h | ||
3 | * | ||
4 | * Generic implementation of the mutex fastpath, based on NOP :-) | ||
5 | * | ||
6 | * This is used by the mutex-debugging infrastructure, but it can also | ||
7 | * be used by architectures that (for whatever reason) want to use the | ||
8 | * spinlock based slowpath. | ||
9 | */ | ||
10 | #ifndef _ASM_GENERIC_MUTEX_NULL_H | ||
11 | #define _ASM_GENERIC_MUTEX_NULL_H | ||
12 | |||
13 | /* extra parameter only needed for mutex debugging: */ | ||
14 | #ifndef __IP__ | ||
15 | # define __IP__ | ||
16 | #endif | ||
17 | |||
18 | #define __mutex_fastpath_lock(count, fail_fn) fail_fn(count __RET_IP__) | ||
19 | #define __mutex_fastpath_lock_retval(count, fail_fn) fail_fn(count __RET_IP__) | ||
20 | #define __mutex_fastpath_unlock(count, fail_fn) fail_fn(count __RET_IP__) | ||
21 | #define __mutex_fastpath_trylock(count, fail_fn) fail_fn(count) | ||
22 | #define __mutex_slowpath_needs_to_unlock() 1 | ||
23 | |||
24 | #endif | ||