RWSEM_FLAG_WAITERS
if ((rcnt == 1) && (count & RWSEM_FLAG_WAITERS)) {
adjustment += RWSEM_FLAG_WAITERS;
atomic_long_or(RWSEM_FLAG_WAITERS, &sem->count);
#define RWSEM_READ_FAILED_MASK (RWSEM_WRITER_MASK|RWSEM_FLAG_WAITERS|\
if (unlikely((tmp & (RWSEM_LOCK_MASK|RWSEM_FLAG_WAITERS)) ==
RWSEM_FLAG_WAITERS)) {
if (unlikely(tmp & RWSEM_FLAG_WAITERS))
if (tmp & RWSEM_FLAG_WAITERS)
atomic_long_andnot(RWSEM_FLAG_HANDOFF | RWSEM_FLAG_WAITERS, &sem->count);
adjustment -= RWSEM_FLAG_WAITERS;
new &= ~RWSEM_FLAG_WAITERS;