Lines Matching refs:count

79 	return atomic_long_add_return(delta, (atomic_long_t *)&sem->count);  in ldsem_atomic_update()
89 long tmp = atomic_long_cmpxchg(&sem->count, *old, new); in ldsem_cmpxchg()
112 sem->count = LDSEM_UNLOCKED; in __init_ldsem()
123 long adjust, count; in __ldsem_wake_readers() local
130 count = ldsem_atomic_update(adjust, sem); in __ldsem_wake_readers()
132 if (count > 0) in __ldsem_wake_readers()
134 if (ldsem_cmpxchg(&count, count - adjust, sem)) in __ldsem_wake_readers()
154 long count = ldsem_atomic_update(LDSEM_ACTIVE_BIAS, sem); in writer_trylock() local
156 if ((count & LDSEM_ACTIVE_MASK) == LDSEM_ACTIVE_BIAS) in writer_trylock()
158 if (ldsem_cmpxchg(&count, count - LDSEM_ACTIVE_BIAS, sem)) in writer_trylock()
200 down_read_failed(struct ld_semaphore *sem, long count, long timeout) in down_read_failed() argument
213 if (ldsem_cmpxchg(&count, count + adjust, sem)) in down_read_failed()
215 if (count > 0) { in down_read_failed()
228 if ((count & LDSEM_ACTIVE_MASK) == 0) in down_read_failed()
268 down_write_failed(struct ld_semaphore *sem, long count, long timeout) in down_write_failed() argument
282 if (ldsem_cmpxchg(&count, count + adjust, sem)) in down_write_failed()
284 if ((count & LDSEM_ACTIVE_MASK) == LDSEM_ACTIVE_BIAS) { in down_write_failed()
324 long count; in __ldsem_down_read_nested() local
328 count = ldsem_atomic_update(LDSEM_READ_BIAS, sem); in __ldsem_down_read_nested()
329 if (count <= 0) { in __ldsem_down_read_nested()
331 if (!down_read_failed(sem, count, timeout)) { in __ldsem_down_read_nested()
343 long count; in __ldsem_down_write_nested() local
347 count = ldsem_atomic_update(LDSEM_WRITE_BIAS, sem); in __ldsem_down_write_nested()
348 if ((count & LDSEM_ACTIVE_MASK) != LDSEM_ACTIVE_BIAS) { in __ldsem_down_write_nested()
350 if (!down_write_failed(sem, count, timeout)) { in __ldsem_down_write_nested()
374 long count = sem->count; in ldsem_down_read_trylock() local
376 while (count >= 0) { in ldsem_down_read_trylock()
377 if (ldsem_cmpxchg(&count, count + LDSEM_READ_BIAS, sem)) { in ldsem_down_read_trylock()
400 long count = sem->count; in ldsem_down_write_trylock() local
402 while ((count & LDSEM_ACTIVE_MASK) == 0) { in ldsem_down_write_trylock()
403 if (ldsem_cmpxchg(&count, count + LDSEM_WRITE_BIAS, sem)) { in ldsem_down_write_trylock()
417 long count; in ldsem_up_read() local
421 count = ldsem_atomic_update(-LDSEM_READ_BIAS, sem); in ldsem_up_read()
422 if (count < 0 && (count & LDSEM_ACTIVE_MASK) == 0) in ldsem_up_read()
431 long count; in ldsem_up_write() local
435 count = ldsem_atomic_update(-LDSEM_WRITE_BIAS, sem); in ldsem_up_write()
436 if (count < 0) in ldsem_up_write()