Index: generic/include/proc/task.h
===================================================================
--- generic/include/proc/task.h	(revision 214c5a0de22038eb80f19e56f2874756e13772d0)
+++ generic/include/proc/task.h	(revision e090e1bc608c034d91ca98e260828ceb2310c808)
@@ -33,4 +33,5 @@
 #include <synch/spinlock.h>
 #include <synch/mutex.h>
+#include <synch/futex.h>
 #include <adt/btree.h>
 #include <adt/list.h>
Index: generic/include/synch/futex.h
===================================================================
--- generic/include/synch/futex.h	(revision 214c5a0de22038eb80f19e56f2874756e13772d0)
+++ generic/include/synch/futex.h	(revision e090e1bc608c034d91ca98e260828ceb2310c808)
@@ -48,3 +48,5 @@
 extern __native sys_futex_wakeup(__address uaddr);
 
+extern void futex_cleanup(void);
+
 #endif
Index: generic/src/proc/task.c
===================================================================
--- generic/src/proc/task.c	(revision 214c5a0de22038eb80f19e56f2874756e13772d0)
+++ generic/src/proc/task.c	(revision e090e1bc608c034d91ca98e260828ceb2310c808)
@@ -356,9 +356,5 @@
 	 */
 	
-	/*
-	 * TODO:
-	 * Close IPC communication and release used futexes.
-	 * When this thread exits, the task refcount drops to zero and the task structure is
-	 * cleaned.
-	 */
-}
+	ipc_cleanup();
+	futex_cleanup();
+}
Index: generic/src/synch/futex.c
===================================================================
--- generic/src/synch/futex.c	(revision 214c5a0de22038eb80f19e56f2874756e13772d0)
+++ generic/src/synch/futex.c	(revision e090e1bc608c034d91ca98e260828ceb2310c808)
@@ -304,2 +304,7 @@
 	free(futex);
 }
+
+/** Remove references from futexes known to the current task. */
+void futex_cleanup(void)
+{
+}
