r960 - trunk/varnish-cache/bin/varnishd
phk at projects.linpro.no
phk at projects.linpro.no
Mon Sep 11 12:14:45 CEST 2006
Author: phk
Date: 2006-09-11 12:14:45 +0200 (Mon, 11 Sep 2006)
New Revision: 960
Modified:
trunk/varnish-cache/bin/varnishd/cache_acceptor_kqueue.c
Log:
Piggy-back kevent changes on kevent wait call
Modified: trunk/varnish-cache/bin/varnishd/cache_acceptor_kqueue.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_acceptor_kqueue.c 2006-09-11 10:14:29 UTC (rev 959)
+++ trunk/varnish-cache/bin/varnishd/cache_acceptor_kqueue.c 2006-09-11 10:14:45 UTC (rev 960)
@@ -29,16 +29,21 @@
#define NKEV 100
+static struct kevent ki[NKEV];
+static unsigned nki;
+
static void
vca_kq_sess(struct sess *sp, int arm)
{
- struct kevent ke;
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
if (sp->fd < 0)
return;
- EV_SET(&ke, sp->fd, EVFILT_READ, arm, 0, 0, sp);
- AZ(kevent(kq, &ke, 1, NULL, 0, NULL));
+ EV_SET(&ki[nki], sp->fd, EVFILT_READ, arm, 0, 0, sp);
+ if (++nki == NKEV) {
+ AZ(kevent(kq, ki, nki, NULL, 0, NULL));
+ nki = 0;
+ }
}
static void
@@ -46,7 +51,6 @@
{
int i, j;
struct sess *sp;
- struct kevent ke[NKEV];
struct sess *ss[NKEV];
AN(kp->udata);
@@ -59,13 +63,13 @@
CHECK_OBJ_NOTNULL(ss[j], SESS_MAGIC);
assert(ss[j]->fd >= 0);
TAILQ_INSERT_TAIL(&sesshead, ss[j], list);
- EV_SET(&ke[j], ss[j]->fd, EVFILT_READ,
- EV_ADD, 0, 0, ss[j]);
+ vca_kq_sess(ss[j], EV_ADD);
j++;
i -= sizeof ss[0];
}
assert(i == 0);
- AZ(kevent(kq, ke, j, NULL, 0, NULL));
+ assert(j > 0);
+ assert(j <= NKEV);
return;
}
CAST_OBJ_NOTNULL(sp, kp->udata, SESS_MAGIC);
@@ -111,9 +115,11 @@
EV_SET(&ke[j++], pipes[0], EVFILT_READ, EV_ADD, 0, 0, pipes);
AZ(kevent(kq, ke, j, NULL, 0, NULL));
+ nki = 0;
while (1) {
- n = kevent(kq, NULL, 0, ke, NKEV, NULL);
+ n = kevent(kq, ki, nki, ke, NKEV, NULL);
assert(n >= 1 && n <= NKEV);
+ nki = 0;
for (kp = ke, j = 0; j < n; j++, kp++) {
if (kp->filter == EVFILT_TIMER)
continue;
More information about the varnish-commit
mailing list