Lines Matching refs:sem
25 static inline void __down_read(struct rw_semaphore *sem) in __down_read() argument
27 if (atomic_inc_return((atomic_t *)(&sem->count)) > 0) in __down_read()
30 rwsem_down_read_failed(sem); in __down_read()
33 static inline int __down_read_trylock(struct rw_semaphore *sem) in __down_read_trylock() argument
37 while ((tmp = sem->count) >= 0) { in __down_read_trylock()
38 if (tmp == cmpxchg(&sem->count, tmp, in __down_read_trylock()
50 static inline void __down_write(struct rw_semaphore *sem) in __down_write() argument
55 (atomic_t *)(&sem->count)); in __down_write()
59 rwsem_down_write_failed(sem); in __down_write()
62 static inline int __down_write_trylock(struct rw_semaphore *sem) in __down_write_trylock() argument
66 tmp = cmpxchg(&sem->count, RWSEM_UNLOCKED_VALUE, in __down_write_trylock()
75 static inline void __up_read(struct rw_semaphore *sem) in __up_read() argument
80 tmp = atomic_dec_return((atomic_t *)(&sem->count)); in __up_read()
82 rwsem_wake(sem); in __up_read()
88 static inline void __up_write(struct rw_semaphore *sem) in __up_write() argument
92 (atomic_t *)(&sem->count)) < 0) in __up_write()
93 rwsem_wake(sem); in __up_write()
99 static inline void rwsem_atomic_add(int delta, struct rw_semaphore *sem) in rwsem_atomic_add() argument
101 atomic_add(delta, (atomic_t *)(&sem->count)); in rwsem_atomic_add()
107 static inline void __downgrade_write(struct rw_semaphore *sem) in __downgrade_write() argument
112 tmp = atomic_add_return(-RWSEM_WAITING_BIAS, (atomic_t *)(&sem->count)); in __downgrade_write()
114 rwsem_downgrade_wake(sem); in __downgrade_write()
117 static inline void __down_write_nested(struct rw_semaphore *sem, int subclass) in __down_write_nested() argument
119 __down_write(sem); in __down_write_nested()
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()