Symbol: uprw
sys/rump/librump/rumpkern/locks_up.c
176
#define UPRW(rw) struct uprw *uprw = *(struct uprw **)rw
sys/rump/librump/rumpkern/locks_up.c
183
struct uprw *uprw;
sys/rump/librump/rumpkern/locks_up.c
188
uprw = rump_hypermalloc(sizeof(*uprw), 0, true, "rwinit");
sys/rump/librump/rumpkern/locks_up.c
189
memset(uprw, 0, sizeof(*uprw));
sys/rump/librump/rumpkern/locks_up.c
190
rumpuser_cv_init(&uprw->uprw_rucv_reader);
sys/rump/librump/rumpkern/locks_up.c
191
rumpuser_cv_init(&uprw->uprw_rucv_writer);
sys/rump/librump/rumpkern/locks_up.c
192
memcpy(rw, &uprw, sizeof(void *));
sys/rump/librump/rumpkern/locks_up.c
200
rumpuser_cv_destroy(uprw->uprw_rucv_reader);
sys/rump/librump/rumpkern/locks_up.c
201
rumpuser_cv_destroy(uprw->uprw_rucv_writer);
sys/rump/librump/rumpkern/locks_up.c
202
rump_hyperfree(uprw, sizeof(*uprw));
sys/rump/librump/rumpkern/locks_up.c
218
rucv = uprw->uprw_rucv_reader;
sys/rump/librump/rumpkern/locks_up.c
219
wp = &uprw->uprw_rwant;
sys/rump/librump/rumpkern/locks_up.c
221
rucv = uprw->uprw_rucv_writer;
sys/rump/librump/rumpkern/locks_up.c
222
wp = &uprw->uprw_wwant;
sys/rump/librump/rumpkern/locks_up.c
239
if (uprw->uprw_owner == NULL && uprw->uprw_wwant == 0) {
sys/rump/librump/rumpkern/locks_up.c
240
uprw->uprw_readers++;
sys/rump/librump/rumpkern/locks_up.c
245
if (uprw->uprw_owner == NULL && uprw->uprw_readers == 0) {
sys/rump/librump/rumpkern/locks_up.c
246
uprw->uprw_owner = curlwp;
sys/rump/librump/rumpkern/locks_up.c
260
if (uprw->uprw_readers > 0) {
sys/rump/librump/rumpkern/locks_up.c
261
uprw->uprw_readers--;
sys/rump/librump/rumpkern/locks_up.c
263
KASSERT(uprw->uprw_owner == curlwp);
sys/rump/librump/rumpkern/locks_up.c
264
uprw->uprw_owner = NULL;
sys/rump/librump/rumpkern/locks_up.c
267
if (uprw->uprw_wwant) {
sys/rump/librump/rumpkern/locks_up.c
268
rumpuser_cv_signal(uprw->uprw_rucv_writer);
sys/rump/librump/rumpkern/locks_up.c
269
} else if (uprw->uprw_rwant) {
sys/rump/librump/rumpkern/locks_up.c
270
rumpuser_cv_signal(uprw->uprw_rucv_reader);
sys/rump/librump/rumpkern/locks_up.c
279
if (uprw->uprw_readers == 1 && uprw->uprw_owner == NULL) {
sys/rump/librump/rumpkern/locks_up.c
280
uprw->uprw_readers = 0;
sys/rump/librump/rumpkern/locks_up.c
281
uprw->uprw_owner = curlwp;
sys/rump/librump/rumpkern/locks_up.c
293
return uprw->uprw_owner == curlwp;
sys/rump/librump/rumpkern/locks_up.c
301
return uprw->uprw_readers > 0;
sys/rump/librump/rumpkern/locks_up.c
309
return uprw->uprw_owner || uprw->uprw_readers;