struct srcaddr *srcaddr;
struct acct acct;
- unsigned char *wlp, *wle;
+ unsigned char *wlb, *wlp, *wle;
unsigned wlr;
- unsigned char wlog[WLOGSPACE];
};
struct workreq {
double t;
struct sess *sp;
struct object *o2;
+ unsigned char log[1024]; /* XXX size ? */
(void)arg;
XXXAN(sp);
sp->wrk = &ww;
ww.magic = WORKER_MAGIC;
- ww.wlp = ww.wlog;
- ww.wle = ww.wlog + sizeof ww.wlog;
+ ww.wlp = ww.wlb = log;
+ ww.wle = log + sizeof log;
AZ(sleep(10)); /* XXX: Takes time for VCL to arrive */
VCL_Get(&sp->vcl);
setbuf(stderr, NULL);
printf("Child starts\n");
+#define SZOF(foo) printf("sizeof(%s) = %d\n", #foo, sizeof(foo));
+ SZOF(struct ws);
+ SZOF(struct http);
+ SZOF(struct http_conn);
+ SZOF(struct acct);
+ SZOF(struct worker);
+ SZOF(struct workreq);
+ SZOF(struct bereq);
+ SZOF(struct storage);
+ SZOF(struct object);
+ SZOF(struct objhead);
+ SZOF(struct sess);
+ SZOF(struct vbe_conn);
+ SZOF(struct backend);
+
+
CNT_Init();
VCL_Init();
struct worker w[1];
struct wq *qp;
char c;
+ unsigned char wlog[8192]; /* XXX: size */
qp = priv;
memset(w, 0, sizeof *w);
w->magic = WORKER_MAGIC;
w->used = TIM_real();
- w->wlp = w->wlog;
- w->wle = w->wlog + sizeof w->wlog;
+ w->wlb = w->wlp = wlog;
+ w->wle = wlog + sizeof wlog;
AZ(pipe(w->pipe));
VSL(SLT_WorkThread, 0, "%p start", w);
unsigned char *p;
unsigned l;
- l = pdiff(w->wlog, w->wlp);
+ l = pdiff(w->wlb, w->wlp);
if (l == 0)
return;
LOCKSHM(&vsl_mtx);
if (loghead->ptr + l + 1 >= loghead->size)
vsl_wrap();
p = logstart + loghead->ptr;
- memcpy(p + 1, w->wlog + 1, l - 1);
+ memcpy(p + 1, w->wlb + 1, l - 1);
p[l] = SLT_ENDMARKER;
loghead->ptr += l;
assert(loghead->ptr < loghead->size);
/* XXX: memory barrier here */
- p[0] = w->wlog[0];
+ p[0] = w->wlb[0];
UNLOCKSHM(&vsl_mtx);
- w->wlp = w->wlog;
+ w->wlp = w->wlb;
w->wlr = 0;
}