Index: kernel/generic/include/proc/task.h
===================================================================
--- kernel/generic/include/proc/task.h	(revision 33c29521d96b892e096419a2fd8beb867e2596f6)
+++ kernel/generic/include/proc/task.h	(revision c0c26ac0de18c254bbce5fef8c6dbbbf0dbca479)
@@ -43,6 +43,8 @@
 #include <synch/mutex.h>
 #include <synch/futex.h>
+#include <synch/workqueue.h>
 #include <adt/avl.h>
 #include <adt/btree.h>
+#include <adt/cht.h>
 #include <adt/list.h>
 #include <security/cap.h>
@@ -127,11 +129,13 @@
 	task_arch_t arch;
 	
-	/**
-	 * Serializes access to the B+tree of task's futexes. This mutex is
-	 * independent on the task spinlock.
-	 */
-	mutex_t futexes_lock;
-	/** B+tree of futexes referenced by this task. */
-	btree_t futexes;
+	/** Serializes access to futex_list (independent of the task spinlock). */
+	mutex_t futex_list_lock;
+	/** List of all futexes accesses by this task. */
+	list_t futex_list;
+	/** CHT mapping virtual addresses of futex variables to futex objects. */
+	struct futex_cache {
+		work_t destroy_work;
+		cht_t ht;
+	} *futexes;
 	
 	/** Accumulated accounting. */
