Lines Matching full:reader
31 * Big reader spinlocks provide cache-local contention-free read
38 * of larger reader objects due to necessary linkage overhead. In
88 /* The reader list is protected under the writer br. */ in ck_brlock_write_lock()
142 ck_brlock_read_register(struct ck_brlock *br, struct ck_brlock_reader *reader) in ck_brlock_read_register() argument
145 reader->n_readers = 0; in ck_brlock_read_register()
146 reader->previous = NULL; in ck_brlock_read_register()
151 reader->next = ck_pr_load_ptr(&br->readers); in ck_brlock_read_register()
152 if (reader->next != NULL) in ck_brlock_read_register()
153 reader->next->previous = reader; in ck_brlock_read_register()
154 ck_pr_store_ptr(&br->readers, reader); in ck_brlock_read_register()
161 ck_brlock_read_unregister(struct ck_brlock *br, struct ck_brlock_reader *reader) in ck_brlock_read_unregister() argument
166 if (reader->next != NULL) in ck_brlock_read_unregister()
167 reader->next->previous = reader->previous; in ck_brlock_read_unregister()
169 if (reader->previous != NULL) in ck_brlock_read_unregister()
170 reader->previous->next = reader->next; in ck_brlock_read_unregister()
172 br->readers = reader->next; in ck_brlock_read_unregister()
179 ck_brlock_read_lock(struct ck_brlock *br, struct ck_brlock_reader *reader) in ck_brlock_read_lock() argument
182 if (reader->n_readers >= 1) { in ck_brlock_read_lock()
183 ck_pr_store_uint(&reader->n_readers, reader->n_readers + 1); in ck_brlock_read_lock()
192 ck_pr_fas_uint(&reader->n_readers, 1); in ck_brlock_read_lock()
195 * Serialize reader counter update with respect to load of in ck_brlock_read_lock()
200 ck_pr_store_uint(&reader->n_readers, 1); in ck_brlock_read_lock()
203 * Serialize reader counter update with respect to load of in ck_brlock_read_lock()
212 ck_pr_store_uint(&reader->n_readers, 0); in ck_brlock_read_lock()
221 struct ck_brlock_reader *reader, in ck_brlock_read_trylock() argument
226 if (reader->n_readers >= 1) { in ck_brlock_read_trylock()
227 ck_pr_store_uint(&reader->n_readers, reader->n_readers + 1); in ck_brlock_read_trylock()
240 ck_pr_fas_uint(&reader->n_readers, 1); in ck_brlock_read_trylock()
243 * Serialize reader counter update with respect to load of in ck_brlock_read_trylock()
248 ck_pr_store_uint(&reader->n_readers, 1); in ck_brlock_read_trylock()
251 * Serialize reader counter update with respect to load of in ck_brlock_read_trylock()
260 ck_pr_store_uint(&reader->n_readers, 0); in ck_brlock_read_trylock()
271 ck_brlock_read_unlock(struct ck_brlock_reader *reader) in ck_brlock_read_unlock() argument
275 ck_pr_store_uint(&reader->n_readers, reader->n_readers - 1); in ck_brlock_read_unlock()