summaryrefslogtreecommitdiff
path: root/kernel/rwsem.c
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2013-10-31 18:19:28 +0100
committerIngo Molnar <mingo@kernel.org>2013-11-06 09:24:18 +0100
commited428bfc3caaa4b1e6cd15ea12c90c30291903f0 (patch)
tree7e69731ab4951cb9473e96b2fd4b743321c6d770 /kernel/rwsem.c
parent1696a8bee390929fed05c6297164816ae2ced280 (diff)
locking: Move the rwsem code to kernel/locking/
Notably: changed lib/rwsem* targets from lib- to obj-, no idea about the ramifications of that. Suggested-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/n/tip-g0kynfh5feriwc6p3h6kpbw6@git.kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/rwsem.c')
-rw-r--r--kernel/rwsem.c157
1 files changed, 0 insertions, 157 deletions
diff --git a/kernel/rwsem.c b/kernel/rwsem.c
deleted file mode 100644
index cfff1435bdfb..000000000000
--- a/kernel/rwsem.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/* kernel/rwsem.c: R/W semaphores, public implementation
- *
- * Written by David Howells (dhowells@redhat.com).
- * Derived from asm-i386/semaphore.h
- */
-
-#include <linux/types.h>
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/export.h>
-#include <linux/rwsem.h>
-
-#include <linux/atomic.h>
-
-/*
- * lock for reading
- */
-void __sched down_read(struct rw_semaphore *sem)
-{
- might_sleep();
- rwsem_acquire_read(&sem->dep_map, 0, 0, _RET_IP_);
-
- LOCK_CONTENDED(sem, __down_read_trylock, __down_read);
-}
-
-EXPORT_SYMBOL(down_read);
-
-/*
- * trylock for reading -- returns 1 if successful, 0 if contention
- */
-int down_read_trylock(struct rw_semaphore *sem)
-{
- int ret = __down_read_trylock(sem);
-
- if (ret == 1)
- rwsem_acquire_read(&sem->dep_map, 0, 1, _RET_IP_);
- return ret;
-}
-
-EXPORT_SYMBOL(down_read_trylock);
-
-/*
- * lock for writing
- */
-void __sched down_write(struct rw_semaphore *sem)
-{
- might_sleep();
- rwsem_acquire(&sem->dep_map, 0, 0, _RET_IP_);
-
- LOCK_CONTENDED(sem, __down_write_trylock, __down_write);
-}
-
-EXPORT_SYMBOL(down_write);
-
-/*
- * trylock for writing -- returns 1 if successful, 0 if contention
- */
-int down_write_trylock(struct rw_semaphore *sem)
-{
- int ret = __down_write_trylock(sem);
-
- if (ret == 1)
- rwsem_acquire(&sem->dep_map, 0, 1, _RET_IP_);
- return ret;
-}
-
-EXPORT_SYMBOL(down_write_trylock);
-
-/*
- * release a read lock
- */
-void up_read(struct rw_semaphore *sem)
-{
- rwsem_release(&sem->dep_map, 1, _RET_IP_);
-
- __up_read(sem);
-}
-
-EXPORT_SYMBOL(up_read);
-
-/*
- * release a write lock
- */
-void up_write(struct rw_semaphore *sem)
-{
- rwsem_release(&sem->dep_map, 1, _RET_IP_);
-
- __up_write(sem);
-}
-
-EXPORT_SYMBOL(up_write);
-
-/*
- * downgrade write lock to read lock
- */
-void downgrade_write(struct rw_semaphore *sem)
-{
- /*
- * lockdep: a downgraded write will live on as a write
- * dependency.
- */
- __downgrade_write(sem);
-}
-
-EXPORT_SYMBOL(downgrade_write);
-
-#ifdef CONFIG_DEBUG_LOCK_ALLOC
-
-void down_read_nested(struct rw_semaphore *sem, int subclass)
-{
- might_sleep();
- rwsem_acquire_read(&sem->dep_map, subclass, 0, _RET_IP_);
-
- LOCK_CONTENDED(sem, __down_read_trylock, __down_read);
-}
-
-EXPORT_SYMBOL(down_read_nested);
-
-void _down_write_nest_lock(struct rw_semaphore *sem, struct lockdep_map *nest)
-{
- might_sleep();
- rwsem_acquire_nest(&sem->dep_map, 0, 0, nest, _RET_IP_);
-
- LOCK_CONTENDED(sem, __down_write_trylock, __down_write);
-}
-
-EXPORT_SYMBOL(_down_write_nest_lock);
-
-void down_read_non_owner(struct rw_semaphore *sem)
-{
- might_sleep();
-
- __down_read(sem);
-}
-
-EXPORT_SYMBOL(down_read_non_owner);
-
-void down_write_nested(struct rw_semaphore *sem, int subclass)
-{
- might_sleep();
- rwsem_acquire(&sem->dep_map, subclass, 0, _RET_IP_);
-
- LOCK_CONTENDED(sem, __down_write_trylock, __down_write);
-}
-
-EXPORT_SYMBOL(down_write_nested);
-
-void up_read_non_owner(struct rw_semaphore *sem)
-{
- __up_read(sem);
-}
-
-EXPORT_SYMBOL(up_read_non_owner);
-
-#endif
-
-