Index: uspace/lib/c/generic/fibril_synch.c
===================================================================
--- uspace/lib/c/generic/fibril_synch.c	(revision 9f9b6f0e9f3a28742f8e8c61c7f259ddb78884e9)
+++ uspace/lib/c/generic/fibril_synch.c	(revision 9a99aa590ef49523397169b86b44756008e1d749)
@@ -629,4 +629,40 @@
 }
 
+/** Delay fibril execution for the specified number of microseconds
+ *
+ * @param usec Number of microseconds to sleep
+ */
+void fibril_usleep(useconds_t usec)
+{
+	fibril_condvar_t cv;
+	fibril_mutex_t lock;
+
+	fibril_condvar_initialize(&cv);
+	fibril_mutex_initialize(&lock);
+	fibril_mutex_lock(&lock);
+	fibril_condvar_wait_timeout(&cv, &lock, usec);
+	fibril_mutex_unlock(&lock);
+}
+
+/** Delay fibril execution for the specified number of seconds
+ *
+ * @param sec Number of seconds to sleep
+ */
+void fibril_sleep(unsigned int sec)
+{
+	/*
+	 * Sleep in 1000 second steps to support
+	 * full argument range
+	 */
+
+	while (sec > 0) {
+		unsigned int period = (sec > 1000) ? 1000 : sec;
+
+		fibril_usleep(period * 1000000);
+		sec -= period;
+	}
+}
+
+
 /** @}
  */
Index: uspace/lib/c/include/fibril_synch.h
===================================================================
--- uspace/lib/c/include/fibril_synch.h	(revision 9f9b6f0e9f3a28742f8e8c61c7f259ddb78884e9)
+++ uspace/lib/c/include/fibril_synch.h	(revision 9a99aa590ef49523397169b86b44756008e1d749)
@@ -173,4 +173,6 @@
 extern fibril_timer_state_t fibril_timer_clear(fibril_timer_t *);
 extern fibril_timer_state_t fibril_timer_clear_locked(fibril_timer_t *);
+extern void fibril_usleep(useconds_t);
+extern void fibril_sleep(unsigned int);
 
 #endif
Index: uspace/lib/posix/source/time.c
===================================================================
--- uspace/lib/posix/source/time.c	(revision 9f9b6f0e9f3a28742f8e8c61c7f259ddb78884e9)
+++ uspace/lib/posix/source/time.c	(revision 9a99aa590ef49523397169b86b44756008e1d749)
@@ -45,4 +45,5 @@
 #include "posix/assert.h"
 
+#include "libc/fibril_synch.h"
 #include "libc/malloc.h"
 #include "libc/task.h"
@@ -50,5 +51,4 @@
 #include "libc/stdbool.h"
 #include "libc/stddef.h"
-#include "libc/thread.h"
 #include "libc/sys/time.h"
 
@@ -315,8 +315,8 @@
 			// TODO: interruptible sleep
 			if (rqtp->tv_sec != 0) {
-				thread_sleep(rqtp->tv_sec);
+				fibril_sleep(rqtp->tv_sec);
 			}
 			if (rqtp->tv_nsec != 0) {
-				thread_usleep(rqtp->tv_nsec / 1000);
+				fibril_usleep(rqtp->tv_nsec / 1000);
 			}
 			return 0;
