[MAJOR] replaced rbtree with ul2tree.
The rbtree-based wait queue consumes a lot of CPU. Use the ul2tree
instead. Lots of cleanups and code reorganizations made it possible
to reduce the task struct and simplify the code a bit.
diff --git a/src/checks.c b/src/checks.c
index 309d0c4..f9bc5c5 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -75,7 +75,7 @@
sess->srv = NULL; /* it's left to the dispatcher to choose a server */
http_flush_cookie_flags(&sess->txn);
pendconn_free(pc);
- task_wakeup(&rq, sess->task);
+ task_wakeup(sess->task);
xferred++;
}
}
@@ -167,7 +167,7 @@
}
}
out_wakeup:
- task_wakeup(&rq, t);
+ task_wakeup(t);
out_nowake:
EV_FD_CLR(fd, DIR_WR); /* nothing more to write */
fdtab[fd].ev &= ~FD_POLL_WR;
@@ -237,7 +237,7 @@
out_wakeup:
EV_FD_CLR(fd, DIR_RD);
- task_wakeup(&rq, t);
+ task_wakeup(t);
fdtab[fd].ev &= ~FD_POLL_RD;
return 1;
}
@@ -436,7 +436,7 @@
p->sess->srv = s;
sess = p->sess;
pendconn_free(p);
- task_wakeup(&rq, sess->task);
+ task_wakeup(sess->task);
}
sprintf(trash,