Lines Matching refs:rw

49 ck_swlock_init(struct ck_swlock *rw)
52 rw->value = 0;
58 ck_swlock_write_unlock(ck_swlock_t *rw)
62 ck_pr_and_32(&rw->value, CK_SWLOCK_READER_MASK);
67 ck_swlock_locked_writer(ck_swlock_t *rw)
71 r = ck_pr_load_32(&rw->value) & CK_SWLOCK_WRITER_BIT;
77 ck_swlock_write_downgrade(ck_swlock_t *rw)
80 ck_pr_inc_32(&rw->value);
81 ck_swlock_write_unlock(rw);
86 ck_swlock_locked(ck_swlock_t *rw)
90 r = ck_pr_load_32(&rw->value);
96 ck_swlock_write_trylock(ck_swlock_t *rw)
100 r = ck_pr_cas_32(&rw->value, 0, CK_SWLOCK_WRITER_BIT);
109 ck_swlock_write_lock(ck_swlock_t *rw)
112 ck_pr_or_32(&rw->value, CK_SWLOCK_WRITER_BIT);
113 while (ck_pr_load_32(&rw->value) & CK_SWLOCK_READER_MASK)
121 ck_swlock_write_latch(ck_swlock_t *rw)
125 ck_pr_or_32(&rw->value, CK_SWLOCK_WRITER_BIT);
128 while (ck_pr_cas_32(&rw->value, CK_SWLOCK_WRITER_BIT,
132 } while (ck_pr_load_32(&rw->value) != CK_SWLOCK_WRITER_BIT);
140 ck_swlock_write_unlatch(ck_swlock_t *rw)
144 ck_pr_store_32(&rw->value, 0);
156 ck_swlock_read_trylock(ck_swlock_t *rw)
158 uint32_t l = ck_pr_load_32(&rw->value);
163 l = ck_pr_faa_32(&rw->value, 1) & CK_SWLOCK_WRITER_MASK;
165 ck_pr_dec_32(&rw->value);
172 ck_swlock_read_lock(ck_swlock_t *rw)
177 while (ck_pr_load_32(&rw->value) & CK_SWLOCK_WRITER_BIT)
180 l = ck_pr_faa_32(&rw->value, 1) & CK_SWLOCK_WRITER_MASK;
190 ck_pr_dec_32(&rw->value);
198 ck_swlock_locked_reader(ck_swlock_t *rw)
202 return ck_pr_load_32(&rw->value) & CK_SWLOCK_READER_MASK;
206 ck_swlock_read_unlock(ck_swlock_t *rw)
210 ck_pr_dec_32(&rw->value);