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