diff options
author | Will Deacon <will.deacon@arm.com> | 2017-10-03 14:25:27 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2017-10-10 05:50:18 -0400 |
commit | a8a217c22116eff6c120d753c9934089fb229af0 (patch) | |
tree | d56f1283ba7153f9ead9fb92c1a1794143c6e4a3 /arch/tile | |
parent | 26c4eb192c6224e5297496cead36404b62fb071b (diff) |
locking/core: Remove {read,spin,write}_can_lock()
Outside of the locking code itself, {read,spin,write}_can_lock() have no
users in tree. Apparmor (the last remaining user of write_can_lock()) got
moved over to lockdep by the previous patch.
This patch removes the use of {read,spin,write}_can_lock() from the
BUILD_LOCK_OPS macro, deferring to the trylock operation for testing the
lock status, and subsequently removes the unused macros altogether. They
aren't guaranteed to work in a concurrent environment and can give
incorrect results in the case of qrwlock.
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: paulmck@linux.vnet.ibm.com
Link: http://lkml.kernel.org/r/1507055129-12300-2-git-send-email-will.deacon@arm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/tile')
-rw-r--r-- | arch/tile/include/asm/spinlock_32.h | 16 | ||||
-rw-r--r-- | arch/tile/include/asm/spinlock_64.h | 18 |
2 files changed, 0 insertions, 34 deletions
diff --git a/arch/tile/include/asm/spinlock_32.h b/arch/tile/include/asm/spinlock_32.h index cba8ba9b8da6..91d05f21cba9 100644 --- a/arch/tile/include/asm/spinlock_32.h +++ b/arch/tile/include/asm/spinlock_32.h | |||
@@ -80,22 +80,6 @@ static inline void arch_spin_unlock(arch_spinlock_t *lock) | |||
80 | #define _RD_COUNT_WIDTH 8 | 80 | #define _RD_COUNT_WIDTH 8 |
81 | 81 | ||
82 | /** | 82 | /** |
83 | * arch_read_can_lock() - would read_trylock() succeed? | ||
84 | */ | ||
85 | static inline int arch_read_can_lock(arch_rwlock_t *rwlock) | ||
86 | { | ||
87 | return (rwlock->lock << _RD_COUNT_WIDTH) == 0; | ||
88 | } | ||
89 | |||
90 | /** | ||
91 | * arch_write_can_lock() - would write_trylock() succeed? | ||
92 | */ | ||
93 | static inline int arch_write_can_lock(arch_rwlock_t *rwlock) | ||
94 | { | ||
95 | return rwlock->lock == 0; | ||
96 | } | ||
97 | |||
98 | /** | ||
99 | * arch_read_lock() - acquire a read lock. | 83 | * arch_read_lock() - acquire a read lock. |
100 | */ | 84 | */ |
101 | void arch_read_lock(arch_rwlock_t *rwlock); | 85 | void arch_read_lock(arch_rwlock_t *rwlock); |
diff --git a/arch/tile/include/asm/spinlock_64.h b/arch/tile/include/asm/spinlock_64.h index 9a2c2d605752..c802f48badf4 100644 --- a/arch/tile/include/asm/spinlock_64.h +++ b/arch/tile/include/asm/spinlock_64.h | |||
@@ -93,24 +93,6 @@ static inline int arch_write_val_locked(int val) | |||
93 | return val < 0; /* Optimize "val & __WRITE_LOCK_BIT". */ | 93 | return val < 0; /* Optimize "val & __WRITE_LOCK_BIT". */ |
94 | } | 94 | } |
95 | 95 | ||
96 | /** | ||
97 | * read_can_lock - would read_trylock() succeed? | ||
98 | * @lock: the rwlock in question. | ||
99 | */ | ||
100 | static inline int arch_read_can_lock(arch_rwlock_t *rw) | ||
101 | { | ||
102 | return !arch_write_val_locked(rw->lock); | ||
103 | } | ||
104 | |||
105 | /** | ||
106 | * write_can_lock - would write_trylock() succeed? | ||
107 | * @lock: the rwlock in question. | ||
108 | */ | ||
109 | static inline int arch_write_can_lock(arch_rwlock_t *rw) | ||
110 | { | ||
111 | return rw->lock == 0; | ||
112 | } | ||
113 | |||
114 | extern void __read_lock_failed(arch_rwlock_t *rw); | 96 | extern void __read_lock_failed(arch_rwlock_t *rw); |
115 | 97 | ||
116 | static inline void arch_read_lock(arch_rwlock_t *rw) | 98 | static inline void arch_read_lock(arch_rwlock_t *rw) |