[MAJOR] replace ultree with ebtree in wait-queues
The ultree code has been removed in favor of a simpler and
cleaner ebtree implementation. The eternity queue does not
need to exist anymore, and the pool_tree64 has been removed.
The ebtree node is stored in the task itself. The qlist list
header is still used by the run-queue, but will be able to
disappear once the run-queue uses ebtree too.
diff --git a/include/types/task.h b/include/types/task.h
index e0bbd6d..6b56547 100644
--- a/include/types/task.h
+++ b/include/types/task.h
@@ -2,7 +2,7 @@
include/types/task.h
Macros, variables and structures for task management.
- Copyright (C) 2000-2007 Willy Tarreau - w@1wt.eu
+ Copyright (C) 2000-2008 Willy Tarreau - w@1wt.eu
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -25,8 +25,8 @@
#include <sys/time.h>
#include <common/config.h>
+#include <common/eb32tree.h>
#include <common/mini-clist.h>
-#include <import/tree.h>
/* values for task->state */
#define TASK_IDLE 0
@@ -35,7 +35,7 @@
/* The base for all tasks */
struct task {
struct list qlist; /* chaining in the same queue; bidirectionnal but not circular */
- struct ultree *wq; /* NULL if unqueued, or back ref to the carrier node in the WQ */
+ struct eb32_node eb; /* ebtree node used to hold the task in the wait queue */
int state; /* task state : IDLE or RUNNING */
struct timeval expire; /* next expiration time for this task, use only for fast sorting */
void (*process)(struct task *t, struct timeval *next); /* the function which processes the task */