Index: init/init.c
===================================================================
--- init/init.c	(revision e5a1f82f130880819d13b0748a2b517dd8a63df5)
+++ init/init.c	(revision 81e55099b22232ea3913c4636bc94f40e6208d44)
@@ -38,5 +38,5 @@
 void utest(void *arg)
 {
-//	printf("Uspace thread started.\n");
+	printf("Uspace thread started.\n");
 	for (;;)
 		;
Index: libc/generic/thread.c
===================================================================
--- libc/generic/thread.c	(revision e5a1f82f130880819d13b0748a2b517dd8a63df5)
+++ libc/generic/thread.c	(revision 81e55099b22232ea3913c4636bc94f40e6208d44)
@@ -33,4 +33,13 @@
 #include <kernel/proc/uarg.h>
 
+/** Main thread function.
+ *
+ * This function is called from __thread_entry() and is used
+ * to call the thread's implementing function and perform cleanup
+ * and exit when thread returns back. Do not call this function
+ * directly.
+ *
+ * @param uarg Pointer to userspace argument structure.
+ */
 void thread_main(uspace_arg_t *uarg)
 {
@@ -41,4 +50,15 @@
 }
 
+/** Create userspace thread.
+ *
+ * This function creates new userspace thread and allocates userspace
+ * stack and userspace argument structure for it.
+ *
+ * @param function Function implementing the thread.
+ * @param arg Argument to be passed to thread.
+ * @param name Symbolic name of the thread.
+ *
+ * @param TID of the new thread on success or -1 on failure.
+ */
 int thread_create(void (* function)(void *), void *arg, char *name)
 {
@@ -55,7 +75,8 @@
 		return -1;
 	}
+	
 	uarg->uspace_entry = (void *) FADDR(__thread_entry);
 	uarg->uspace_stack = (void *) stack;
-	uarg->uspace_thread_function = (void *) FADDR(function);
+	uarg->uspace_thread_function = function;
 	uarg->uspace_thread_arg = arg;
 	uarg->uspace_uarg = uarg;
@@ -64,4 +85,8 @@
 }
 
+/** Terminate current thread.
+ *
+ * @param stat Exit status. Currently not used.
+ */
 void thread_exit(int status)
 {
