[experimental-ims] 738cafa Drop struct workreq, we don't use it.
Geoff Simmons
geoff at varnish-cache.org
Mon Jan 9 21:51:55 CET 2012
commit 738cafa04be5cca08cbb472603974732357ce112
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Sat Sep 17 16:45:07 2011 +0000
Drop struct workreq, we don't use it.
diff --git a/bin/varnishd/cache.h b/bin/varnishd/cache.h
index 0a566f2..65d1886 100644
--- a/bin/varnishd/cache.h
+++ b/bin/varnishd/cache.h
@@ -108,7 +108,6 @@ struct objhead;
struct objcore;
struct busyobj;
struct storage;
-struct workreq;
struct vrt_backend;
struct cli_proto;
struct ban;
@@ -307,7 +306,7 @@ struct worker {
pthread_cond_t cond;
VTAILQ_ENTRY(worker) list;
- struct workreq *wrq;
+ struct sess *sp;
struct VCL_conf *vcl;
@@ -369,21 +368,6 @@ struct worker {
struct acct acct_tmp;
};
-/* Work Request for worker thread ------------------------------------*/
-
-/*
- * This is a worker-function.
- * XXX: typesafety is probably not worth fighting for
- */
-
-typedef void workfunc(struct worker *, void *priv);
-
-struct workreq {
- VTAILQ_ENTRY(workreq) list;
- workfunc *func;
- void *priv;
-};
-
/* Storage -----------------------------------------------------------*/
struct storage {
@@ -614,7 +598,7 @@ struct sess {
/* Various internal stuff */
struct sessmem *mem;
- struct workreq workreq;
+ VTAILQ_ENTRY(sess) poollist;
struct acct acct_req;
struct acct acct_ses;
diff --git a/bin/varnishd/cache_cli.c b/bin/varnishd/cache_cli.c
index a3d1851..dd26303 100644
--- a/bin/varnishd/cache_cli.c
+++ b/bin/varnishd/cache_cli.c
@@ -131,7 +131,6 @@ cli_debug_sizeof(struct cli *cli, const char * const *av, void *priv)
SZOF(struct http_conn);
SZOF(struct acct);
SZOF(struct worker);
- SZOF(struct workreq);
SZOF(struct storage);
SZOF(struct object);
SZOF(struct objcore);
diff --git a/bin/varnishd/cache_pool.c b/bin/varnishd/cache_pool.c
index 63245d6..6fc7737 100644
--- a/bin/varnishd/cache_pool.c
+++ b/bin/varnishd/cache_pool.c
@@ -69,7 +69,7 @@ struct pool {
#define POOL_MAGIC 0x606658fa
struct lock mtx;
struct workerhead idle;
- VTAILQ_HEAD(, workreq) queue;
+ VTAILQ_HEAD(, sess) queue;
unsigned nthr;
unsigned lqueue;
unsigned last_lqueue;
@@ -105,9 +105,9 @@ Pool_Work_Thread(void *priv, struct worker *w)
CHECK_OBJ_NOTNULL(w, WORKER_MAGIC);
/* Process queued requests, if any */
- w->wrq = VTAILQ_FIRST(&qp->queue);
- if (w->wrq != NULL) {
- VTAILQ_REMOVE(&qp->queue, w->wrq, list);
+ w->sp = VTAILQ_FIRST(&qp->queue);
+ if (w->sp != NULL) {
+ VTAILQ_REMOVE(&qp->queue, w->sp, poollist);
qp->lqueue--;
} else {
if (isnan(w->lastused))
@@ -117,17 +117,21 @@ Pool_Work_Thread(void *priv, struct worker *w)
WRK_SumStat(w);
Lck_CondWait(&w->cond, &qp->mtx);
}
- if (w->wrq == NULL)
+ if (w->sp == NULL)
break;
Lck_Unlock(&qp->mtx);
stats_clean = 0;
- AN(w->wrq);
- AN(w->wrq->func);
w->lastused = NAN;
WS_Reset(w->ws, NULL);
w->storage_hint = NULL;
- w->wrq->func(w, w->wrq->priv);
+ AZ(w->sp->wrk);
+ THR_SetSession(w->sp);
+ w->sp->wrk = w;
+ CHECK_OBJ_ORNULL(w->nobjhead, OBJHEAD_MAGIC);
+ CNT_Session(w->sp);
+ CHECK_OBJ_ORNULL(w->nobjhead, OBJHEAD_MAGIC);
+ THR_SetSession(NULL);
WS_Assert(w->ws);
AZ(w->bereq->ws);
@@ -136,7 +140,7 @@ Pool_Work_Thread(void *priv, struct worker *w)
AZ(w->wrw.wfd);
AZ(w->storage_hint);
assert(w->wlp == w->wlb);
- w->wrq = NULL;
+ w->sp = NULL;
if (params->diag_bitmap & 0x00040000) {
if (w->vcl != NULL)
VCL_Rel(&w->vcl);
@@ -156,7 +160,7 @@ Pool_Work_Thread(void *priv, struct worker *w)
*/
static int
-WRK_Queue(struct workreq *wrq)
+WRK_Queue(struct sess *sp)
{
struct worker *w;
struct pool *qp;
@@ -181,7 +185,7 @@ WRK_Queue(struct workreq *wrq)
if (w != NULL) {
VTAILQ_REMOVE(&qp->idle, w, list);
Lck_Unlock(&qp->mtx);
- w->wrq = wrq;
+ w->sp = sp;
AZ(pthread_cond_signal(&w->cond));
return (0);
}
@@ -193,7 +197,7 @@ WRK_Queue(struct workreq *wrq)
return (-1);
}
- VTAILQ_INSERT_TAIL(&qp->queue, wrq, list);
+ VTAILQ_INSERT_TAIL(&qp->queue, sp, poollist);
qp->nqueue++;
qp->lqueue++;
Lck_Unlock(&qp->mtx);
@@ -203,31 +207,12 @@ WRK_Queue(struct workreq *wrq)
/*--------------------------------------------------------------------*/
-static void
-wrk_do_cnt_sess(struct worker *w, void *priv)
-{
- struct sess *sess;
-
- CAST_OBJ_NOTNULL(sess, priv, SESS_MAGIC);
- AZ(sess->wrk);
- THR_SetSession(sess);
- sess->wrk = w;
- CHECK_OBJ_ORNULL(w->nobjhead, OBJHEAD_MAGIC);
- CNT_Session(sess);
- CHECK_OBJ_ORNULL(w->nobjhead, OBJHEAD_MAGIC);
- THR_SetSession(NULL);
-}
-
-/*--------------------------------------------------------------------*/
-
int
Pool_QueueSession(struct sess *sp)
{
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
AZ(sp->wrk);
- sp->workreq.func = wrk_do_cnt_sess;
- sp->workreq.priv = sp;
- if (WRK_Queue(&sp->workreq) == 0)
+ if (WRK_Queue(sp) == 0)
return (0);
/*
@@ -303,7 +288,7 @@ wrk_decimate_flock(struct pool *qp, double t_idle, struct VSC_C_main *vs)
/* And give it a kiss on the cheek... */
if (w != NULL) {
- AZ(w->wrq);
+ AZ(w->sp);
AZ(pthread_cond_signal(&w->cond));
TIM_sleep(params->wthread_purge_delay * 1e-3);
}
More information about the varnish-commit
mailing list