Index: uspace/lib/libc/include/async_priv.h
===================================================================
--- uspace/lib/libc/include/async_priv.h	(revision b6ee5b112c06c03a7a1b7e50e20d88d3e5413c99)
+++ uspace/lib/libc/include/async_priv.h	(revision b69bec5e88dc3e437f3f41c9497f63c714a12c39)
@@ -56,4 +56,14 @@
 } to_event_t;
 
+/** Structures of this type are used to track the wakeup events. */
+typedef struct {
+	/** If true, this struct is in a synchronization object wait queue. */
+	bool inlist;
+	
+	/** Wait queue linkage. */
+	link_t link;
+} wu_event_t;
+
+
 /** Structures of this type represent a waiting fibril. */
 typedef struct {
@@ -66,4 +76,6 @@
 	/** Timeout wait data. */
 	to_event_t to_event;
+	/** Wakeup wait data. */
+	wu_event_t wu_event;
 } awaiter_t;
 
Index: uspace/lib/libc/include/fibril_sync.h
===================================================================
--- uspace/lib/libc/include/fibril_sync.h	(revision b6ee5b112c06c03a7a1b7e50e20d88d3e5413c99)
+++ uspace/lib/libc/include/fibril_sync.h	(revision b69bec5e88dc3e437f3f41c9497f63c714a12c39)
@@ -40,4 +40,5 @@
 #include <adt/list.h>
 #include <libarch/tls.h>
+#include <sys/time.h>
 
 typedef struct {
@@ -95,4 +96,6 @@
 
 extern void fibril_condvar_initialize(fibril_condvar_t *);
+extern int fibril_condvar_wait_timeout(fibril_condvar_t *, fibril_mutex_t *,
+    suseconds_t);
 extern void fibril_condvar_wait(fibril_condvar_t *, fibril_mutex_t *);
 extern void fibril_condvar_signal(fibril_condvar_t *);
