Пример #1
0
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);
}
Пример #2
0
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);
}
Пример #3
0
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;
}
Пример #4
0
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);
}
Пример #5
0
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);
}
Пример #6
0
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;
}