diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2014-03-02 07:09:47 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-04-14 09:42:19 -0400 |
commit | f26c70a452dc0507bf7d3d2c3158ee7808e14f1c (patch) | |
tree | 7626bda5305bd7c9013d48ef50d030ade70b4b70 /include | |
parent | 47c4534a109e45700d1d1c8467c2b5a618212d81 (diff) |
futex: Allow architectures to skip futex_atomic_cmpxchg_inatomic() test
commit 03b8c7b623c80af264c4c8d6111e5c6289933666 upstream.
If an architecture has futex_atomic_cmpxchg_inatomic() implemented and there
is no runtime check necessary, allow to skip the test within futex_init().
This allows to get rid of some code which would always give the same result,
and also allows the compiler to optimize a couple of if statements away.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Finn Thain <fthain@telegraphics.com.au>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Link: http://lkml.kernel.org/r/20140302120947.GA3641@osiris
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
[geert: Backported to v3.10..v3.13]
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/futex.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/futex.h b/include/linux/futex.h index b0d95cac826e..6435f46d6e13 100644 --- a/include/linux/futex.h +++ b/include/linux/futex.h | |||
@@ -55,7 +55,11 @@ union futex_key { | |||
55 | #ifdef CONFIG_FUTEX | 55 | #ifdef CONFIG_FUTEX |
56 | extern void exit_robust_list(struct task_struct *curr); | 56 | extern void exit_robust_list(struct task_struct *curr); |
57 | extern void exit_pi_state_list(struct task_struct *curr); | 57 | extern void exit_pi_state_list(struct task_struct *curr); |
58 | #ifdef CONFIG_HAVE_FUTEX_CMPXCHG | ||
59 | #define futex_cmpxchg_enabled 1 | ||
60 | #else | ||
58 | extern int futex_cmpxchg_enabled; | 61 | extern int futex_cmpxchg_enabled; |
62 | #endif | ||
59 | #else | 63 | #else |
60 | static inline void exit_robust_list(struct task_struct *curr) | 64 | static inline void exit_robust_list(struct task_struct *curr) |
61 | { | 65 | { |