Index: generic/include/ipc/ipc.h
===================================================================
--- generic/include/ipc/ipc.h	(revision 93165be1285f3a50e69871962061a2e2fcfb9ae6)
+++ generic/include/ipc/ipc.h	(revision 9f525639659c979c952ae9372c881791de6d13aa)
@@ -79,5 +79,5 @@
  *
  * The protocol for negotiating is:
- * - sys_connecttome - sends a message IPC_M_CONNECTTOME
+ * - sys_connect_to_me - sends a message IPC_M_CONNECTTOME
  * - sys_wait_for_call - upon receipt tries to allocate new phone
  *                       - if it fails, responds with ELIMIT
Index: generic/include/proc/thread.h
===================================================================
--- generic/include/proc/thread.h	(revision 93165be1285f3a50e69871962061a2e2fcfb9ae6)
+++ generic/include/proc/thread.h	(revision 9f525639659c979c952ae9372c881791de6d13aa)
@@ -44,6 +44,4 @@
 #define THREAD_STACK_SIZE	STACK_SIZE
 
-#define THREAD_USER_STACK	1
-
 enum state {
 	Invalid,	/**< It is an error, if thread is found in this state. */
@@ -60,8 +58,8 @@
 #define X_STOLEN	(1<<1)
 
+#define THREAD_NAME_BUFLEN	20
+
 /** Thread structure. There is one per thread. */
 struct thread {
-	char *name;
-	
 	link_t rq_link;				/**< Run queue link. */
 	link_t wq_link;				/**< Wait queue link. */
@@ -76,4 +74,6 @@
 	 */
 	SPINLOCK_DECLARE(lock);
+
+	char name[THREAD_NAME_BUFLEN];
 
 	void (* thread_code)(void *);		/**< Function implementing the thread. */
@@ -118,4 +118,10 @@
 };
 
+/** Structure passed to uinit kernel thread as argument. */
+typedef struct uspace_arg {
+	__address uspace_entry;
+	__address uspace_stack;
+} uspace_arg_t;
+
 /** Thread list lock.
  *
@@ -140,7 +146,10 @@
 extern void thread_destroy(thread_t *t);
 
-
 /* Fpu context slab cache */
 extern slab_cache_t *fpu_context_slab;
 
+/** Thread syscall prototypes. */
+__native sys_thread_create(__address function, void *arg, void *stack, char *name);
+__native sys_thread_exit(int status);
+
 #endif
Index: generic/include/syscall/syscall.h
===================================================================
--- generic/include/syscall/syscall.h	(revision 93165be1285f3a50e69871962061a2e2fcfb9ae6)
+++ generic/include/syscall/syscall.h	(revision 9f525639659c979c952ae9372c881791de6d13aa)
@@ -31,6 +31,7 @@
 
 typedef enum {
-	SYS_CTL = 0,
-	SYS_IO,
+	SYS_IO = 0,
+	SYS_THREAD_CREATE,
+	SYS_THREAD_EXIT,
 	SYS_MMAP,
 	SYS_MREMAP,
Index: generic/include/userspace.h
===================================================================
--- generic/include/userspace.h	(revision 93165be1285f3a50e69871962061a2e2fcfb9ae6)
+++ generic/include/userspace.h	(revision 9f525639659c979c952ae9372c881791de6d13aa)
@@ -30,7 +30,9 @@
 #define __USERSPACE_H__
 
+#include <proc/thread.h>
 #include <arch/types.h>
 
-extern void userspace(__address entry) __attribute__ ((noreturn)); /**< Switch to user-space (CPU user priviledge level) */
+/** Switch to user-space (CPU user priviledge level) */
+extern void userspace(uspace_arg_t *uarg) __attribute__ ((noreturn)); 
 
 #endif
