Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1370481
| From | Michal Hocko <mhocko@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 1/2] xtensa, rwsem: drop superfluous arch specific implementation |
| Date | 2016-04-04 11:10 +0200 |
| Message-ID | <rk8Ge-NO-21@gated-at.bofh.it> (permalink) |
| References | <rk8Ge-NO-11@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/xtensa/include/asm/Kbuild | 1 +
arch/xtensa/include/asm/rwsem.h | 134 ----------------------------------------
2 files changed, 1 insertion(+), 134 deletions(-)
delete mode 100644 arch/xtensa/include/asm/rwsem.h
diff --git a/arch/xtensa/include/asm/Kbuild b/arch/xtensa/include/asm/Kbuild
index b56855a1382a..28cf4c5d65ef 100644
--- a/arch/xtensa/include/asm/Kbuild
+++ b/arch/xtensa/include/asm/Kbuild
@@ -22,6 +22,7 @@ generic-y += mm-arch-hooks.h
generic-y += percpu.h
generic-y += preempt.h
generic-y += resource.h
+generic-y += rwsem.h
generic-y += sections.h
generic-y += siginfo.h
generic-y += statfs.h
diff --git a/arch/xtensa/include/asm/rwsem.h b/arch/xtensa/include/asm/rwsem.h
deleted file mode 100644
index 6283823b8040..000000000000
--- a/arch/xtensa/include/asm/rwsem.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * include/asm-xtensa/rwsem.h
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Largely copied from include/asm-ppc/rwsem.h
- *
- * Copyright (C) 2001 - 2005 Tensilica Inc.
- */
-
-#ifndef _XTENSA_RWSEM_H
-#define _XTENSA_RWSEM_H
-
-#ifndef _LINUX_RWSEM_H
-#error "Please don't include <asm/rwsem.h> directly, use <linux/rwsem.h> instead."
-#endif
-
-#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_add_return(1,(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_sub_return(1,(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 /* _XTENSA_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