Home | History | Annotate | Download | only in librumpuser

Lines Matching refs:rw

367 doputwait(struct spclient *spc, struct respwait *rw, struct rsp_hdr *rhdr)
370 rw->rw_data = NULL;
371 rw->rw_dlen = rw->rw_done = rw->rw_error = 0;
372 pthread_cond_init(&rw->rw_cv, NULL);
375 rw->rw_reqno = rhdr->rsp_reqno = spc->spc_nextreq++;
376 TAILQ_INSERT_TAIL(&spc->spc_respwait, rw, rw_entries);
380 putwait_locked(struct spclient *spc, struct respwait *rw, struct rsp_hdr *rhdr)
383 doputwait(spc, rw, rhdr);
388 putwait(struct spclient *spc, struct respwait *rw, struct rsp_hdr *rhdr)
391 doputwait(spc, rw, rhdr);
397 dounputwait(struct spclient *spc, struct respwait *rw)
400 TAILQ_REMOVE(&spc->spc_respwait, rw, rw_entries);
402 pthread_cond_destroy(&rw->rw_cv);
407 unputwait_locked(struct spclient *spc, struct respwait *rw)
411 dounputwait(spc, rw);
415 unputwait(struct spclient *spc, struct respwait *rw)
421 dounputwait(spc, rw);
427 struct respwait *rw;
431 TAILQ_FOREACH(rw, &spc->spc_respwait, rw_entries) {
432 if (rw->rw_reqno == spc->spc_hdr.rsp_reqno)
435 if (rw == NULL) {
442 DPRINTF(("rump_sp: client %p woke up waiter at %p\n", spc, rw));
443 rw->rw_data = spc->spc_buf;
444 rw->rw_done = 1;
445 rw->rw_dlen = (size_t)(spc->spc_off - HDRSZ);
447 error = rw->rw_error = errmap(spc->spc_hdr.rsp_error);
449 pthread_cond_signal(&rw->rw_cv);
461 struct respwait *rw;
464 TAILQ_FOREACH(rw, &spc->spc_respwait, rw_entries)
465 pthread_cond_broadcast(&rw->rw_cv);