Lines Matching refs:sem
30 static inline void __down_read(struct rw_semaphore *sem) in __down_read() argument
32 if (atomic_add_return(1,(atomic_t *)(&sem->count)) > 0) in __down_read()
35 rwsem_down_read_failed(sem); in __down_read()
38 static inline int __down_read_trylock(struct rw_semaphore *sem) in __down_read_trylock() argument
42 while ((tmp = sem->count) >= 0) { in __down_read_trylock()
43 if (tmp == cmpxchg(&sem->count, tmp, in __down_read_trylock()
55 static inline void __down_write(struct rw_semaphore *sem) in __down_write() argument
60 (atomic_t *)(&sem->count)); in __down_write()
64 rwsem_down_write_failed(sem); in __down_write()
67 static inline int __down_write_trylock(struct rw_semaphore *sem) in __down_write_trylock() argument
71 tmp = cmpxchg(&sem->count, RWSEM_UNLOCKED_VALUE, in __down_write_trylock()
80 static inline void __up_read(struct rw_semaphore *sem) in __up_read() argument
85 tmp = atomic_sub_return(1,(atomic_t *)(&sem->count)); in __up_read()
87 rwsem_wake(sem); in __up_read()
93 static inline void __up_write(struct rw_semaphore *sem) in __up_write() argument
97 (atomic_t *)(&sem->count)) < 0) in __up_write()
98 rwsem_wake(sem); in __up_write()
104 static inline void rwsem_atomic_add(int delta, struct rw_semaphore *sem) in rwsem_atomic_add() argument
106 atomic_add(delta, (atomic_t *)(&sem->count)); in rwsem_atomic_add()
112 static inline void __downgrade_write(struct rw_semaphore *sem) in __downgrade_write() argument
117 tmp = atomic_add_return(-RWSEM_WAITING_BIAS, (atomic_t *)(&sem->count)); in __downgrade_write()
119 rwsem_downgrade_wake(sem); in __downgrade_write()
125 static inline int rwsem_atomic_update(int delta, struct rw_semaphore *sem) in rwsem_atomic_update() argument
128 return atomic_add_return(delta, (atomic_t *)(&sem->count)); in rwsem_atomic_update()