void np_srv_remove_conn(Npsrv *srv, Npconn *conn) { Npconn *c, **pc; xpthread_mutex_lock(&srv->lock); pc = &srv->conns; c = *pc; while (c != NULL) { if (c == conn) { *pc = c->next; c->next = NULL; break; } pc = &c->next; c = *pc; } srv->conncount--; xpthread_cond_signal(&srv->conncountcond); xpthread_mutex_unlock(&srv->lock); np_tpool_cleanup (srv); }
void np_conn_decref(Npconn *conn) { xpthread_mutex_lock(&conn->lock); NP_ASSERT(conn->refcount > 0); conn->refcount--; xpthread_mutex_unlock(&conn->lock); xpthread_cond_signal(&conn->refcond); }
int np_srv_add_conn(Npsrv *srv, Npconn *conn) { xpthread_mutex_lock(&srv->lock); conn->srv = srv; conn->next = srv->conns; srv->conns = conn; srv->conncount++; srv->connhistory++; xpthread_cond_signal(&srv->conncountcond); xpthread_mutex_unlock(&srv->lock); return 1; }
void np_srv_add_req(Npsrv *srv, Npreq *req) { Nptpool *tp = NULL; /* assert: srv->lock held */ if (req->fid) tp = req->fid->tpool; if (!tp) tp = srv->tpool; req->prev = tp->reqs_last; if (tp->reqs_last) tp->reqs_last->next = req; tp->reqs_last = req; if (!tp->reqs_first) tp->reqs_first = req; xpthread_cond_signal(&tp->reqcond); }
void np_srv_add_req(Npsrv *srv, Npreq *req) { Nptpool *tp = NULL; if (req->fid) tp = req->fid->tpool; if (!tp) tp = srv->tpool; xpthread_mutex_lock(&tp->lock); req->prev = tp->reqs_last; if (tp->reqs_last) tp->reqs_last->next = req; tp->reqs_last = req; if (!tp->reqs_first) tp->reqs_first = req; xpthread_mutex_unlock(&tp->lock); xpthread_cond_signal(&tp->reqcond); }
int np_srv_add_conn(Npsrv *srv, Npconn *conn) { int ret; ret = 0; xpthread_mutex_lock(&srv->lock); np_conn_incref(conn); conn->srv = srv; conn->next = srv->conns; srv->conns = conn; ret = 1; srv->conncount++; srv->connhistory++; xpthread_cond_signal(&srv->conncountcond); xpthread_mutex_unlock(&srv->lock); return ret; }