Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1370479
| From | Michal Hocko <mhocko@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 2/2] sh, rwsem: drop superfluous arch specific implementation |
| Date | 2016-04-04 11:10 +0200 |
| Message-ID | <rk8Ge-NO-27@gated-at.bofh.it> (permalink) |
| References | <rk8Ge-NO-11@gated-at.bofh.it> <rk8Ge-NO-21@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
From: Michal Hocko <mhocko@suse.com>
since "locking, rwsem: drop explicit memory barriers" the arch specific
code is basically same as the the generic one so we can drop the
superfluous code.
Suggested-by: Davidlohr Bueso <dave@stgolabs.net>
Signed-off-by: Michal Hocko <mhocko@suse.com>
---
arch/sh/include/asm/Kbuild | 1 +
arch/sh/include/asm/rwsem.h | 130 --------------------------------------------
2 files changed, 1 insertion(+), 130 deletions(-)
delete mode 100644 arch/sh/include/asm/rwsem.h
diff --git a/arch/sh/include/asm/Kbuild b/arch/sh/include/asm/Kbuild
index aac452b26aa8..6d866c7a9b74 100644
--- a/arch/sh/include/asm/Kbuild
+++ b/arch/sh/include/asm/Kbuild
@@ -25,6 +25,7 @@ generic-y += percpu.h
generic-y += poll.h
generic-y += preempt.h
generic-y += resource.h
+generic-y += rwsem.h
generic-y += sembuf.h
generic-y += serial.h
generic-y += shmbuf.h
diff --git a/arch/sh/include/asm/rwsem.h b/arch/sh/include/asm/rwsem.h
deleted file mode 100644
index 8a457b83d2a5..000000000000
--- a/arch/sh/include/asm/rwsem.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * include/asm-sh/rwsem.h: R/W semaphores for SH using the stuff
- * in lib/rwsem.c.
- */
-
-#ifndef _ASM_SH_RWSEM_H
-#define _ASM_SH_RWSEM_H
-
-#ifndef _LINUX_RWSEM_H
-#error "please don't include asm/rwsem.h directly, use linux/rwsem.h instead"
-#endif
-
-#ifdef __KERNEL__
-
-#define RWSEM_UNLOCKED_VALUE 0x00000000
-#define RWSEM_ACTIVE_BIAS 0x00000001
-#define RWSEM_ACTIVE_MASK 0x0000ffff
-#define RWSEM_WAITING_BIAS (-0x00010000)
-#define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS
-#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS)
-
-/*
- * lock for reading
- */
-static inline void __down_read(struct rw_semaphore *sem)
-{
- if (atomic_inc_return((atomic_t *)(&sem->count)) <= 0)
- rwsem_down_read_failed(sem);
-}
-
-static inline int __down_read_trylock(struct rw_semaphore *sem)
-{
- int tmp;
-
- while ((tmp = sem->count) >= 0) {
- if (tmp == cmpxchg(&sem->count, tmp,
- tmp + RWSEM_ACTIVE_READ_BIAS)) {
- return 1;
- }
- }
- return 0;
-}
-
-/*
- * lock for writing
- */
-static inline void __down_write(struct rw_semaphore *sem)
-{
- int tmp;
-
- tmp = atomic_add_return(RWSEM_ACTIVE_WRITE_BIAS,
- (atomic_t *)(&sem->count));
- if (tmp != RWSEM_ACTIVE_WRITE_BIAS)
- rwsem_down_write_failed(sem);
-}
-
-static inline int __down_write_killable(struct rw_semaphore *sem)
-{
- int tmp;
-
- tmp = atomic_add_return(RWSEM_ACTIVE_WRITE_BIAS,
- (atomic_t *)(&sem->count));
- if (tmp != RWSEM_ACTIVE_WRITE_BIAS)
- if (IS_ERR(rwsem_down_write_failed_killable(sem)))
- return -EINTR;
-
- return 0;
-}
-
-static inline int __down_write_trylock(struct rw_semaphore *sem)
-{
- int tmp;
-
- tmp = cmpxchg(&sem->count, RWSEM_UNLOCKED_VALUE,
- RWSEM_ACTIVE_WRITE_BIAS);
- return tmp == RWSEM_UNLOCKED_VALUE;
-}
-
-/*
- * unlock after reading
- */
-static inline void __up_read(struct rw_semaphore *sem)
-{
- int tmp;
-
- tmp = atomic_dec_return((atomic_t *)(&sem->count));
- if (tmp < -1 && (tmp & RWSEM_ACTIVE_MASK) == 0)
- rwsem_wake(sem);
-}
-
-/*
- * unlock after writing
- */
-static inline void __up_write(struct rw_semaphore *sem)
-{
- if (atomic_sub_return(RWSEM_ACTIVE_WRITE_BIAS,
- (atomic_t *)(&sem->count)) < 0)
- rwsem_wake(sem);
-}
-
-/*
- * implement atomic add functionality
- */
-static inline void rwsem_atomic_add(int delta, struct rw_semaphore *sem)
-{
- atomic_add(delta, (atomic_t *)(&sem->count));
-}
-
-/*
- * downgrade write lock to read lock
- */
-static inline void __downgrade_write(struct rw_semaphore *sem)
-{
- int tmp;
-
- tmp = atomic_add_return(-RWSEM_WAITING_BIAS, (atomic_t *)(&sem->count));
- if (tmp < 0)
- rwsem_downgrade_wake(sem);
-}
-
-/*
- * implement exchange and add functionality
- */
-static inline int rwsem_atomic_update(int delta, struct rw_semaphore *sem)
-{
- return atomic_add_return(delta, (atomic_t *)(&sem->count));
-}
-
-#endif /* __KERNEL__ */
-#endif /* _ASM_SH_RWSEM_H */
--
2.8.0.rc3
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 0/11] introduce down_write_killable for rw_semaphore v2 Michal Hocko <mhocko@kernel.org> - 2016-04-01 13:10 +0200
[PATCH 11/11] locking, rwsem: provide down_write_killable Michal Hocko <mhocko@kernel.org> - 2016-04-01 13:10 +0200
[PATCH 10/11] x86, rwsem: provide __down_write_killable Michal Hocko <mhocko@kernel.org> - 2016-04-01 13:10 +0200
Re: [PATCH 10/11] x86, rwsem: provide __down_write_killable Peter Zijlstra <peterz@infradead.org> - 2016-04-06 20:40 +0200
[PATCH 04/11] alpha, rwsem: provide __down_write_killable Michal Hocko <mhocko@kernel.org> - 2016-04-01 13:10 +0200
[PATCH 01/11] locking, rwsem: get rid of __down_write_nested Michal Hocko <mhocko@kernel.org> - 2016-04-01 13:10 +0200
Re: [PATCH 01/11] locking, rwsem: get rid of __down_write_nested Davidlohr Bueso <dave@stgolabs.net> - 2016-04-02 02:30 +0200
[PATCH 02/11] locking, rwsem: drop explicit memory barriers Michal Hocko <mhocko@kernel.org> - 2016-04-01 13:10 +0200
Re: [PATCH 02/11] locking, rwsem: drop explicit memory barriers Davidlohr Bueso <dave@stgolabs.net> - 2016-04-02 03:20 +0200
Re: [PATCH 02/11] locking, rwsem: drop explicit memory barriers Michal Hocko <mhocko@kernel.org> - 2016-04-04 11:10 +0200
[PATCH 2/2] sh, rwsem: drop superfluous arch specific implementation Michal Hocko <mhocko@kernel.org> - 2016-04-04 11:10 +0200
Re: [PATCH 2/2] sh, rwsem: drop superfluous arch specific implementation Peter Zijlstra <peterz@infradead.org> - 2016-04-06 11:30 +0200
Re: [PATCH 2/2] sh, rwsem: drop superfluous arch specific implementation Geert Uytterhoeven <geert@linux-m68k.org> - 2016-04-06 12:00 +0200
Re: [PATCH 2/2] sh, rwsem: drop superfluous arch specific implementation Peter Zijlstra <peterz@infradead.org> - 2016-04-06 12:30 +0200
[PATCH 1/2] xtensa, rwsem: drop superfluous arch specific implementation Michal Hocko <mhocko@kernel.org> - 2016-04-04 11:10 +0200
Re: [PATCH 1/2] xtensa, rwsem: drop superfluous arch specific implementation Max Filippov <jcmvbkbc@gmail.com> - 2016-04-04 12:30 +0200
[PATCH] sparc, rwsem: drop superfluous arch specific implementation Michal Hocko <mhocko@kernel.org> - 2016-04-06 11:10 +0200
[PATCH 07/11] sh, rwsem: provide __down_write_killable Michal Hocko <mhocko@kernel.org> - 2016-04-01 13:10 +0200
[PATCH 08/11] sparc, rwsem: provide __down_write_killable Michal Hocko <mhocko@kernel.org> - 2016-04-01 13:10 +0200
[PATCH 05/11] ia64, rwsem: provide __down_write_killable Michal Hocko <mhocko@kernel.org> - 2016-04-01 13:10 +0200
[PATCH 06/11] s390, rwsem: provide __down_write_killable Michal Hocko <mhocko@kernel.org> - 2016-04-01 13:10 +0200
csiph-web