Lines Matching refs:sem
24 static inline void __down_read(struct rw_semaphore *sem) in __down_read() argument
28 oldcount = sem->count; in __down_read()
29 sem->count += RWSEM_ACTIVE_READ_BIAS; in __down_read()
41 :"=&r" (oldcount), "=m" (sem->count), "=&r" (temp) in __down_read()
42 :"Ir" (RWSEM_ACTIVE_READ_BIAS), "m" (sem->count) : "memory"); in __down_read()
45 rwsem_down_read_failed(sem); in __down_read()
51 static inline int __down_read_trylock(struct rw_semaphore *sem) in __down_read_trylock() argument
55 res = sem->count; in __down_read_trylock()
61 res = cmpxchg(&sem->count, old, new); in __down_read_trylock()
66 static inline void __down_write(struct rw_semaphore *sem) in __down_write() argument
70 oldcount = sem->count; in __down_write()
71 sem->count += RWSEM_ACTIVE_WRITE_BIAS; in __down_write()
83 :"=&r" (oldcount), "=m" (sem->count), "=&r" (temp) in __down_write()
84 :"Ir" (RWSEM_ACTIVE_WRITE_BIAS), "m" (sem->count) : "memory"); in __down_write()
87 rwsem_down_write_failed(sem); in __down_write()
93 static inline int __down_write_trylock(struct rw_semaphore *sem) in __down_write_trylock() argument
95 long ret = cmpxchg(&sem->count, RWSEM_UNLOCKED_VALUE, in __down_write_trylock()
102 static inline void __up_read(struct rw_semaphore *sem) in __up_read() argument
106 oldcount = sem->count; in __up_read()
107 sem->count -= RWSEM_ACTIVE_READ_BIAS; in __up_read()
119 :"=&r" (oldcount), "=m" (sem->count), "=&r" (temp) in __up_read()
120 :"Ir" (RWSEM_ACTIVE_READ_BIAS), "m" (sem->count) : "memory"); in __up_read()
124 rwsem_wake(sem); in __up_read()
127 static inline void __up_write(struct rw_semaphore *sem) in __up_write() argument
131 sem->count -= RWSEM_ACTIVE_WRITE_BIAS; in __up_write()
132 count = sem->count; in __up_write()
145 :"=&r" (count), "=m" (sem->count), "=&r" (temp) in __up_write()
146 :"Ir" (RWSEM_ACTIVE_WRITE_BIAS), "m" (sem->count) : "memory"); in __up_write()
150 rwsem_wake(sem); in __up_write()
156 static inline void __downgrade_write(struct rw_semaphore *sem) in __downgrade_write() argument
160 oldcount = sem->count; in __downgrade_write()
161 sem->count -= RWSEM_WAITING_BIAS; in __downgrade_write()
173 :"=&r" (oldcount), "=m" (sem->count), "=&r" (temp) in __downgrade_write()
174 :"Ir" (-RWSEM_WAITING_BIAS), "m" (sem->count) : "memory"); in __downgrade_write()
177 rwsem_downgrade_wake(sem); in __downgrade_write()
180 static inline void rwsem_atomic_add(long val, struct rw_semaphore *sem) in rwsem_atomic_add() argument
183 sem->count += val; in rwsem_atomic_add()
194 :"=&r" (temp), "=m" (sem->count) in rwsem_atomic_add()
195 :"Ir" (val), "m" (sem->count)); in rwsem_atomic_add()
199 static inline long rwsem_atomic_update(long val, struct rw_semaphore *sem) in rwsem_atomic_update() argument
202 sem->count += val; in rwsem_atomic_update()
203 return sem->count; in rwsem_atomic_update()
215 :"=&r" (ret), "=m" (sem->count), "=&r" (temp) in rwsem_atomic_update()
216 :"Ir" (val), "m" (sem->count)); in rwsem_atomic_update()