Lines Matching defs:rwstate
2224 * Release one writer or one or more readers. Compute the rwstate word to
2226 * rwstate value back to userland before we wake any of the new lock holders.
2243 uint32_t rwstate = 0;
2255 rwstate |= URW_WRITE_LOCKED;
2264 rwstate |= URW_HAS_WAITERS;
2271 rwstate++;
2281 rwstate |= URW_HAS_WAITERS;
2290 /* Copy the new rwstate back to userland. */
2291 suword32_noerr(&rw->rwlock_readers, rwstate);
2341 uint32_t rwstate;
2456 * rwstate's URW_HAS_WAITERS bit may indicate false positives.
2463 fuword32_noerr(&rw->rwlock_readers, &rwstate);
2469 rwstate |= URW_HAS_WAITERS;
2474 if (!(rwstate & URW_WRITE_LOCKED)) {
2478 * Hmmm, rwstate indicates waiters but there are
2487 rwstate++;
2489 } else if ((rwstate & URW_READERS_MASK) == 0) {
2490 rwstate |= URW_WRITE_LOCKED;
2512 rwstate++;
2522 suword32_noerr(&rw->rwlock_readers, rwstate);
2557 suword32_noerr(&rw->rwlock_readers, rwstate);
2704 uint32_t rwstate;
2753 * to which we also delegate the task of copying the new rwstate
2756 fuword32_noerr(&rw->rwlock_readers, &rwstate);
2757 if (rwstate & URW_WRITE_LOCKED)
2759 else if ((rwstate & URW_READERS_MASK) > 0) {
2760 rwstate--;
2761 if ((rwstate & URW_READERS_MASK) == 0)
2764 suword32_noerr(&rw->rwlock_readers, rwstate);