[PATCH 08/11] sparc, rwsem: provide __down_write_killable
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: LKML <linux-kernel@xxxxxxxxxxxxxxx>
- Subject: [PATCH 08/11] sparc, rwsem: provide __down_write_killable
- From: Michal Hocko <mhocko@xxxxxxxxxx>
- Date: Mon, 29 Feb 2016 13:58:22 +0100
- Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>, Ingo Molnar <mingo@xxxxxxxxxx>, Thomas Gleixner <tglx@xxxxxxxxxxxxx>, "H. Peter Anvin" <hpa@xxxxxxxxx>, "David S. Miller" <davem@xxxxxxxxxxxxx>, Tony Luck <tony.luck@xxxxxxxxx>, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Chris Zankel <chris@xxxxxxxxxx>, Max Filippov <jcmvbkbc@xxxxxxxxx>, x86@xxxxxxxxxx, linux-alpha@xxxxxxxxxxxxxxx, linux-ia64@xxxxxxxxxxxxxxx, linux-s390@xxxxxxxxxxxxxxx, linux-sh@xxxxxxxxxxxxxxx, sparclinux@xxxxxxxxxxxxxxx, linux-xtensa@xxxxxxxxxxxxxxxx, linux-arch@xxxxxxxxxxxxxxx, Michal Hocko <mhocko@xxxxxxxx>
- In-reply-to: <1456750705-7141-1-git-send-email-mhocko@kernel.org>
- List-id: <linux-ia64.vger.kernel.org>
- References: <1456750705-7141-1-git-send-email-mhocko@kernel.org>
From: Michal Hocko <mhocko@xxxxxxxx>
which uses the same fast path as __down_write except it falls back to
rwsem_down_write_failed_killable slow path and return -EINTR if killed.
Signed-off-by: Michal Hocko <mhocko@xxxxxxxx>
---
arch/sparc/include/asm/rwsem.h | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/arch/sparc/include/asm/rwsem.h b/arch/sparc/include/asm/rwsem.h
index e5a0d575bc7f..c1e9e32e8b63 100644
--- a/arch/sparc/include/asm/rwsem.h
+++ b/arch/sparc/include/asm/rwsem.h
@@ -55,6 +55,19 @@ static inline void __down_write(struct rw_semaphore *sem)
rwsem_down_write_failed(sem);
}
+static inline int __down_write_killable(struct rw_semaphore *sem)
+{
+ long tmp;
+
+ tmp = atomic64_add_return(RWSEM_ACTIVE_WRITE_BIAS,
+ (atomic64_t *)(&sem->count));
+ if (unlikely(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)
{
long tmp;
--
2.7.0
--
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Index of Archives]
[Linux Kernel]
[Sparc Linux]
[DCCP]
[Linux ARM]
[Yosemite News]
[Linux SCSI]
[Linux x86_64]
[Linux for Ham Radio]