Index: kernel/generic/include/proc/thread.h
===================================================================
--- kernel/generic/include/proc/thread.h	(revision c9d2075542045c84bee4acd4517ca69262d86867)
+++ kernel/generic/include/proc/thread.h	(revision 3ce7f082ff5b6347e9379564c41ac66808180ade)
@@ -251,4 +251,5 @@
 unative_t sys_thread_create(uspace_arg_t *uspace_uarg, char *uspace_name);
 unative_t sys_thread_exit(int uspace_status);
+unative_t sys_thread_get_id(void);
 
 #endif
Index: kernel/generic/include/syscall/syscall.h
===================================================================
--- kernel/generic/include/syscall/syscall.h	(revision c9d2075542045c84bee4acd4517ca69262d86867)
+++ kernel/generic/include/syscall/syscall.h	(revision 3ce7f082ff5b6347e9379564c41ac66808180ade)
@@ -41,4 +41,5 @@
 	SYS_THREAD_CREATE,
 	SYS_THREAD_EXIT,
+	SYS_THREAD_GET_ID,
 	SYS_TASK_GET_ID,
 	SYS_FUTEX_SLEEP,
Index: kernel/generic/src/proc/thread.c
===================================================================
--- kernel/generic/src/proc/thread.c	(revision c9d2075542045c84bee4acd4517ca69262d86867)
+++ kernel/generic/src/proc/thread.c	(revision 3ce7f082ff5b6347e9379564c41ac66808180ade)
@@ -679,5 +679,17 @@
 }
 
+/** Syscall for getting TID.
+ *
+ * @return Thread ID.
+ */
+unative_t sys_thread_get_id(void)
+{
+	/*
+	 * No need to acquire lock on THREAD because tid
+	 * remains constant for the lifespan of the thread.
+	 */
+	return THREAD->tid;
+}
+
 /** @}
  */
-
Index: kernel/generic/src/syscall/syscall.c
===================================================================
--- kernel/generic/src/syscall/syscall.c	(revision c9d2075542045c84bee4acd4517ca69262d86867)
+++ kernel/generic/src/syscall/syscall.c	(revision 3ce7f082ff5b6347e9379564c41ac66808180ade)
@@ -119,4 +119,5 @@
 	(syshandler_t) sys_thread_create,
 	(syshandler_t) sys_thread_exit,
+	(syshandler_t) sys_thread_get_id,
 	(syshandler_t) sys_task_get_id,
 	
