• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/contrib/ck/include/

Lines Matching defs:bytelock

56 ck_bytelock_init(struct ck_bytelock *bytelock)
60 bytelock->owner = 0;
61 bytelock->n_readers = 0;
62 for (i = 0; i < sizeof bytelock->readers; i++)
63 bytelock->readers[i] = false;
82 ck_bytelock_write_lock(struct ck_bytelock *bytelock, unsigned int slot)
84 CK_BYTELOCK_TYPE *readers = (void *)bytelock->readers;
88 while (ck_pr_cas_uint(&bytelock->owner, 0, slot) == false)
92 if (slot <= sizeof bytelock->readers)
93 ck_pr_store_8(&bytelock->readers[slot - 1], false);
101 for (i = 0; i < sizeof(bytelock->readers) / CK_BYTELOCK_LENGTH; i++) {
107 while (ck_pr_load_uint(&bytelock->n_readers) != 0)
119 ck_bytelock_write_unlock(struct ck_bytelock *bytelock)
123 ck_pr_store_uint(&bytelock->owner, 0);
128 ck_bytelock_read_lock(struct ck_bytelock *bytelock, unsigned int slot)
131 if (ck_pr_load_uint(&bytelock->owner) == slot) {
132 ck_pr_store_8(&bytelock->readers[slot - 1], true);
134 ck_pr_store_uint(&bytelock->owner, 0);
139 if (slot > sizeof bytelock->readers) {
141 ck_pr_inc_uint(&bytelock->n_readers);
143 if (ck_pr_load_uint(&bytelock->owner) == 0)
145 ck_pr_dec_uint(&bytelock->n_readers);
147 while (ck_pr_load_uint(&bytelock->owner) != 0)
158 ck_pr_fas_8(&bytelock->readers[slot], true);
161 ck_pr_store_8(&bytelock->readers[slot], true);
170 if (ck_pr_load_uint(&bytelock->owner) == 0)
173 ck_pr_store_8(&bytelock->readers[slot], false);
174 while (ck_pr_load_uint(&bytelock->owner) != 0)
183 ck_bytelock_read_unlock(struct ck_bytelock *bytelock, unsigned int slot)
188 if (slot > sizeof bytelock->readers)
189 ck_pr_dec_uint(&bytelock->n_readers);
191 ck_pr_store_8(&bytelock->readers[slot - 1], false);