1 /* Public domain. */
2 
3 #ifndef _LINUX_RWSEM_H
4 #define _LINUX_RWSEM_H
5 
6 #define down_read(rwl)			rw_enter_read(rwl)
7 #define down_read_trylock(rwl)		(rw_enter(rwl, RW_READ | RW_NOSLEEP) == 0)
8 #define down_write_trylock(rwl)		(rw_enter(rwl, RW_WRITE | RW_NOSLEEP) == 0)
9 #define up_read(rwl)			rw_exit_read(rwl)
10 #define down_write(rwl)			rw_enter_write(rwl)
11 #define down_write_nest_lock(rwl, x)	rw_enter_write(rwl)
12 #define up_write(rwl)			rw_exit_write(rwl)
13 #define downgrade_write(rwl)		rw_enter(rwl, RW_DOWNGRADE)
14 
15 #define DECLARE_RWSEM(rwl) \
16 	struct rwlock rwl = RWLOCK_INITIALIZER(#rwl)
17 /* no interface to check if another caller wants the lock */
18 #define rwsem_is_contended(rwl)		0
19 
20 #endif
21