Lines Matching refs:br
65 ck_brlock_init(struct ck_brlock *br)
68 br->readers = NULL;
69 br->writer = false;
75 ck_brlock_write_lock(struct ck_brlock *br)
83 while (ck_pr_fas_uint(&br->writer, true) == true)
88 /* The reader list is protected under the writer br. */
89 for (cursor = br->readers; cursor != NULL; cursor = cursor->next) {
99 ck_brlock_write_unlock(struct ck_brlock *br)
103 ck_pr_store_uint(&br->writer, false);
108 ck_brlock_write_trylock(struct ck_brlock *br, unsigned int factor)
113 while (ck_pr_fas_uint(&br->writer, true) == true) {
126 for (cursor = br->readers; cursor != NULL; cursor = cursor->next) {
129 ck_brlock_write_unlock(br);
142 ck_brlock_read_register(struct ck_brlock *br, struct ck_brlock_reader *reader)
149 ck_brlock_write_lock(br);
151 reader->next = ck_pr_load_ptr(&br->readers);
154 ck_pr_store_ptr(&br->readers, reader);
156 ck_brlock_write_unlock(br);
161 ck_brlock_read_unregister(struct ck_brlock *br, struct ck_brlock_reader *reader)
164 ck_brlock_write_lock(br);
172 br->readers = reader->next;
174 ck_brlock_write_unlock(br);
179 ck_brlock_read_lock(struct ck_brlock *br, struct ck_brlock_reader *reader)
188 while (ck_pr_load_uint(&br->writer) == true)
209 if (ck_pr_load_uint(&br->writer) == false)
220 ck_brlock_read_trylock(struct ck_brlock *br,
232 while (ck_pr_load_uint(&br->writer) == true) {
257 if (ck_pr_load_uint(&br->writer) == false)