LDSEM_ACTIVE_BIAS
long count = atomic_long_add_return(LDSEM_ACTIVE_BIAS, &sem->count);
if ((count & LDSEM_ACTIVE_MASK) == LDSEM_ACTIVE_BIAS)
if (atomic_long_try_cmpxchg(&sem->count, &count, count - LDSEM_ACTIVE_BIAS))
long adjust = -LDSEM_ACTIVE_BIAS + LDSEM_WAIT_BIAS;
long adjust = -LDSEM_ACTIVE_BIAS;
if ((count & LDSEM_ACTIVE_MASK) == LDSEM_ACTIVE_BIAS) {
if ((count & LDSEM_ACTIVE_MASK) != LDSEM_ACTIVE_BIAS) {
#define LDSEM_READ_BIAS LDSEM_ACTIVE_BIAS
#define LDSEM_WRITE_BIAS (LDSEM_WAIT_BIAS + LDSEM_ACTIVE_BIAS)
adjust = sem->wait_readers * (LDSEM_ACTIVE_BIAS - LDSEM_WAIT_BIAS);