Lines Matching defs:rw

44 ck_rwlock_init(struct ck_rwlock *rw)
47 rw->writer = 0;
48 rw->n_readers = 0;
54 ck_rwlock_write_unlock(ck_rwlock_t *rw)
58 ck_pr_store_uint(&rw->writer, 0);
63 ck_rwlock_locked_writer(ck_rwlock_t *rw)
67 r = ck_pr_load_uint(&rw->writer);
73 ck_rwlock_write_downgrade(ck_rwlock_t *rw)
76 ck_pr_inc_uint(&rw->n_readers);
77 ck_rwlock_write_unlock(rw);
82 ck_rwlock_locked(ck_rwlock_t *rw)
86 l = ck_pr_load_uint(&rw->n_readers) |
87 ck_pr_load_uint(&rw->writer);
93 ck_rwlock_write_trylock(ck_rwlock_t *rw)
96 if (ck_pr_fas_uint(&rw->writer, 1) != 0)
101 if (ck_pr_load_uint(&rw->n_readers) != 0) {
102 ck_rwlock_write_unlock(rw);
114 ck_rwlock_write_lock(ck_rwlock_t *rw)
117 while (ck_pr_fas_uint(&rw->writer, 1) != 0)
122 while (ck_pr_load_uint(&rw->n_readers) != 0)
134 ck_rwlock_read_trylock(ck_rwlock_t *rw)
137 if (ck_pr_load_uint(&rw->writer) != 0)
140 ck_pr_inc_uint(&rw->n_readers);
148 if (ck_pr_load_uint(&rw->writer) == 0) {
153 ck_pr_dec_uint(&rw->n_readers);
161 ck_rwlock_read_lock(ck_rwlock_t *rw)
165 while (ck_pr_load_uint(&rw->writer) != 0)
168 ck_pr_inc_uint(&rw->n_readers);
176 if (ck_pr_load_uint(&rw->writer) == 0)
179 ck_pr_dec_uint(&rw->n_readers);
188 ck_rwlock_locked_reader(ck_rwlock_t *rw)
192 return ck_pr_load_uint(&rw->n_readers);
196 ck_rwlock_read_unlock(ck_rwlock_t *rw)
200 ck_pr_dec_uint(&rw->n_readers);
212 struct ck_rwlock rw;
220 ck_rwlock_recursive_write_lock(ck_rwlock_recursive_t *rw, unsigned int tid)
224 o = ck_pr_load_uint(&rw->rw.writer);
228 while (ck_pr_cas_uint(&rw->rw.writer, 0, tid) == false)
233 while (ck_pr_load_uint(&rw->rw.n_readers) != 0)
238 rw->wc++;
243 ck_rwlock_recursive_write_trylock(ck_rwlock_recursive_t *rw, unsigned int tid)
247 o = ck_pr_load_uint(&rw->rw.writer);
251 if (ck_pr_cas_uint(&rw->rw.writer, 0, tid) == false)
256 if (ck_pr_load_uint(&rw->rw.n_readers) != 0) {
257 ck_pr_store_uint(&rw->rw.writer, 0);
263 rw->wc++;
268 ck_rwlock_recursive_write_unlock(ck_rwlock_recursive_t *rw)
271 if (--rw->wc == 0) {
273 ck_pr_store_uint(&rw->rw.writer, 0);
280 ck_rwlock_recursive_read_lock(ck_rwlock_recursive_t *rw)
283 ck_rwlock_read_lock(&rw->rw);
288 ck_rwlock_recursive_read_trylock(ck_rwlock_recursive_t *rw)
291 return ck_rwlock_read_trylock(&rw->rw);
295 ck_rwlock_recursive_read_unlock(ck_rwlock_recursive_t *rw)
298 ck_rwlock_read_unlock(&rw->rw);